使用批处理和vbs创建快捷方式

时间:2011-12-23 18:38:31

标签: command-line vbscript batch-file shortcut

我正在尝试制作一个简单(或至少我认为)的批处理文件来查找特定文件类型的文件,然后创建快捷方式以使用特定程序打开它们。

经过大量挖掘后,我发现最好用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 个答案:

答案 0 :(得分:1)

我怀疑问题出在VBScript中,它可能在批处理文件中。您分配给SearchBaseDir的值应该用双引号括起来,如下所示:

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

然后,您需要从传递给createShortcut的参数中删除引号。

您还需要决定是否要使用%% i或%% f,因为两者都不一致。将%% i重命名为%% f,或将%% f重命名为%% i。

最后,我并不完全确定这一点,但最后的%% f可能必须用%% ~f替换,以便除去双引号,如果它的值有任何机会包含双引号。 / p>