我正在尝试用vbscript运行以下代码:
ReturnCode = WshShell.Run("C:\Program Files\Virtutech\Simics 4.2\Simics 4.2.9\x86-win32\bin\simics.exe", 0, True)当我运行这个脚本时,我得到一个错误,说它找不到文件。我认为问题出在路径中的空格,但我不想将此应用程序重新安装到不同的路径。我该如何解决这个问题呢?
编辑:另外,我需要能够将参数放在可执行文件之后。参数是放在引号内还是放在引号外?
发布于 2011-03-02 00:11:13
您可以通过用引号将路径括起来来解决此问题。但要做到这一点,您需要正确地转义它们(使用"),因此:
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"发布于 2011-03-02 00:20:05
将可执行文件放在双引号内:
ReturnCode = WshShell.Run( _
"""C:\Program Files\Virtutech\Simics 4.2\Simics 4.2.9\x86-win32\bin\simics.exe""", _
0, True)发布于 2017-07-08 04:04:18
我从来不喜欢在我的代码中出现多个引号,尽管这绝对是一个有效的解决方案。
为了使我的代码(对我而言)更具可读性,我更喜欢在添加引号时使用chr(34) (引号的ASCII版本),该引号旨在将必须用引号括起来的文件名或其他字符串括起来。它更多的是输入,但对我来说,它避免了像“”x“z12”“这样的行可能引起的潜在混淆。
对于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()是什么的人感到困惑。另一种方法需要较少的输入,但需要您对字符串进行更多的心理解析。两者都不是真正正确或错误的。
https://stackoverflow.com/questions/5156903
复制相似问题