我正在尝试在vbscript中运行以下代码:
ReturnCode = WshShell.Run("C:\Program Files\Virtutech\Simics 4.2\Simics 4.2.9\x86-win32\bin\simics.exe", 0, True)
当我运行此脚本说它无法找到该文件时出现错误。我认为问题是路径中的空格,但我不想将此应用程序重新安装到其他路径。我该如何解决这个问题?
编辑:此外,我需要能够在可执行文件后面添加参数。参数是在引号内还是在引号内?
答案 0 :(得分:4)
您可以通过围绕引号中的路径来解决这个问题。但要这样做,您需要正确地转义它们(使用"
),所以:
ReturnCode = WshShell.Run("""C:\Program Files\Virtutech\Simics 4.2\Simics 4.2.9\x86-win32\bin\simics.exe""", 0, True)
编辑:将路径保留为双引号并根据需要添加它们:
"""C:\Program Files\Virtutech\Simics 4.2\Simics 4.2.9\x86-win32\bin\simics.exe"" argumentGoesHere"
答案 1 :(得分:1)
将可执行文件放在双引号中:
ReturnCode = WshShell.Run( _
"""C:\Program Files\Virtutech\Simics 4.2\Simics 4.2.9\x86-win32\bin\simics.exe""", _
0, True)
答案 2 :(得分:1)
我从未成为我的代码中出现的多个引号的忠实粉丝,尽管它绝对是一个有效的解决方案。
当我添加用于包围文件名或其他名称的引号时,我更喜欢使我的代码(对我而言)更具可读性是使用chr(34)(引号的ASCII版本)必须用引号括起来的字符串。它打字更多,但对我而言,它避免了像#34;"" x y"""""""" x y"" "" z 1 2"""可能导致。
对于OP使用的示例,它看起来像这样:
ReturnCode = WshShell.Run(chr(34) & "C:\Program Files\Virtutech\Simics 4.2\Simics 4.2.9\x86-win32\bin\simics.exe" & chr(34), 0, True)
我喜欢这个的原因可能更清楚一点,当你遇到一个你投入命令行参数的路径时。例如,当你看到这个:
"""C:\Program Files\Some Vendor\Application\program.exe"" -file ""data file.txt"""
很难看出所有这些引用是什么,并弄清楚什么是什么引用。
将其与:
进行比较chr(34) & "C:\Program Files\Some Vendor\Application\program.exe" & chr(34) & _
" -file" & chr(34) & "data file.txt" & chr(34)
在我看来,chr(34)成为一种轻松地在视觉上区分作为字符串定义一部分的引号(例如," data file.txt")和那些所需的引号的方法。 Windows正确理解路径/文件名(在示例中显示为chr(34))。
如果您一致认为使用chr(34)来表示"这是我需要的引号,以便Windows了解代码中的下一个项目"和正常的引号来指定字符串值的开头和结尾,它甚至可以使调试问题更容易一些。
但最终每个人都应该做对他们有用的事情。我的方法需要更多的打字,可能会让那些不知道chr()的人感到困惑。另一个需要较少的输入,但需要您对字符串进行更多的心理解析。这两者都不对或错。
答案 3 :(得分:0)
在路径上放了三个双引号。