2011-12-23 4 views
3

Я пытаюсь создать простой (или, по крайней мере, я думал) пакетный файл для поиска файлов определенного типа файла, а затем создать ярлыки, чтобы открыть их с помощью конкретной программы.Создание ярлыка с партией и vbs

После многого рытья я нашел, что это лучше всего сделать с VBScript, поэтому я создал небольшой скрипт для создания ярлыков для меня. Это не работает, поэтому я надеялся, что кто-то скажет мне, почему. Спасибо.

MakeShortcuts.bat:

SET ShortcutPath=c:\shortcuts\ 
SET ProgramPath="c:\windows\notepad.exe" 
SET SearchBaseDir="C:\Documents and Settings\" 

FOR /R %SearchBaseDir% %%i IN (*.gba) DO (
createShortcut "%ShortcutPath%Open %%~ni.lnk" "%ProgramPath%" "%%i" 
) 

createShortcut.vbs:

set obShell = CreateObject("WScript.Shell") 
sShortcut = obShell.ExpandEnvironmentStrings(WScript.Arguments.Item(0)) 
sTargetPath = obShell.ExpandEnvironmentStrings(WScript.Arguments.Item(1)) 
sArgument = obShell.ExpandEnvironmentStrings(WScript.Arguments.Item(2)) 
set shortcut = obShell.CreateShortcut(sShortcut) 
shortcut.TargetPath = sTargetPath 
shortcut.Arguments = sArgument 
shortcut.Save 

Хорошо, поэтому, когда я побежал MakeShortcuts.bat это дает мне сообщение [Система не может найти указанный диск.] в командной строке.

Он создает ярлыки, как ожидалось, за исключением того, что у цели нет кавычек вокруг аргумента, который препятствует правильному функционированию ярлыков. Я думаю, что это также может быть связано с вышеупомянутым сообщением об ошибке.

Я очень новичок в VBScript, поэтому мне, вероятно, не хватает чего-то довольно глупого. Пожалуйста помоги.

спасибо.

ответ

1

Я сомневаюсь, что проблема в VBScript, вероятно, в пакетном файле. Значение, присваиваемое SearchBaseDir должны быть заключены в двойные кавычки, например:

SET SearchBaseDir="C:\Documents and Settings\" 

Затем вам нужно удалить кавычки из параметров, которые вы передаете CreateShortcut.

Вам также нужно решить, будете ли вы использовать %% i или %% f, потому что использование обоих несовместимо. Переименуйте %% i в %% f или %% f в %% i.

Наконец, я не совсем уверен в этом, но последний %% f, возможно, придется заменить на %% ~ f, чтобы избавиться от двойных кавычек, если его значение в любом случае содержит двойные кавычки.

+0

Спасибо за то, что вы указали проблему %% f и %% i, я переписал код, чтобы удалить специфику программы, но скопировал и вставил биты из оригинала. Я отредактировал свой пример выше, но не ошибся в оригинале. Что вы хотите использовать [%% ~ i], что бы это сделать? Я сделал другие изменения, которые вы предлагали, но все же получал те же результаты. Спасибо за ваш ответ. – user1113827

+0

%% ~ i удаляет двойные кавычки из значения %% i, если значение уже окружено двойными кавычками. Во всяком случае, моим советом было бы сначала заменить команду createShortcut командой echo и убедиться, что ваш командный файл отлично работает, прежде чем переходить к поиску проблем в вашем VBScript. –

Смежные вопросы