【问题标题】:Creating Shortcut with batch and vbs使用批处理和 vbs 创建快捷方式
【发布时间】:2011-12-23 18:38:31
【问题描述】:

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

经过大量挖掘后,我发现最好使用 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"
)

创建快捷方式.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 很陌生,所以我可能错过了一些非常愚蠢的东西。请帮忙。

谢谢。

【问题讨论】:

    标签: command-line vbscript batch-file shortcut


    【解决方案1】:

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

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

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

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

    最后,我对此并不确定,但最后一个 %%f 可能必须替换为 %%~f 以消除双引号,如果它的值包含双引号。

    【讨论】:

    • 感谢您指出 %%f 和 %%i 问题,我重写了代码以删除程序的细节,但从原始文件中复制和粘贴了位。我在上面编辑了我的示例,但在原始示例中没有相同的错误。你是什​​么意思使用 [%%~i] 那会做什么?我做了你建议的其他更改,但仍然有相同的结果。不过感谢您的回复。
    • %%~i 如果 %%i 的值已经被双引号括起来,则该值将从中删除双引号。无论如何,我的建议是首先用 echo 命令替换 createShortcut 命令,并确保您的批处理文件完美运行,然后再继续查找 VBScript 中的问题。
    猜你喜欢
    • 1970-01-01
    • 2011-01-14
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多