Создание ярлыка с пакетом и VBS - PullRequest
3 голосов
/ 23 декабря 2011

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

После долгих поисков я обнаружил, что это лучше всего сделать с помощью 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 Ответ

1 голос
/ 23 декабря 2011

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

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

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

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

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

...