VBScript的问题

问题描述:

我试图在VBScript运行下面的代码:VBScript的问题

ReturnCode = WshShell.Run("C:\Program Files\Virtutech\Simics 4.2\Simics 4.2.9\x86-win32\bin\simics.exe", 0, True) 

我得到一个错误,当我运行此脚本说,它不能找到该文件。我认为问题是路径中的空格,但我不想将此应用程序重新安装到不同的路径。我如何解决这个问题?

编辑:另外,我需要能够把可执行文件后面的参数。这些争论是进入引号还是外部?

+1

请参阅http://msdn.microsoft。COM/EN-US /库/ d5fk67ky%28V = vs.85%29.aspx。任何命令行参数都需要包含在第一个参数中(即在.exe之后的引号内)。 – 2011-03-01 16:55:09

+0

[从vbscript启动程序]的可能重复(http://*.com/questions/1340355/launch-programs-from-vbscript) – 2015-03-12 08:07:58

您可以通过在引号中围绕路径来解决此问题。但要做到这一点,你需要正确(与")逃避他们,所以:

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" 

把三双引用路径。

把双引号的可执行文件内:

ReturnCode = WshShell.Run(_ 
    """C:\Program Files\Virtutech\Simics 4.2\Simics 4.2.9\x86-win32\bin\simics.exe""", _ 
    0, True) 

我从来没有出现在我的代码多个报价的忠实粉丝,但它绝对是一个可行的解决方案。

当我添加用于围绕文件名或其他字符串的引号时,我更愿意使我的代码对我来说更具可读性,即使用chr(34)(引号的ASCII版本)必须包含在引号中。它更加打字,但对我来说,它避免了像“”“x”“”“”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)变成了一种是一个字符串定义(例如,“file.txt的数据”的一部分,引号之间容易视觉上区分)以及Windows需要正确理解路径/文件名(在本例中显示为chr(34))。

如果您对使用chr(34)表示“这是我需要的引号,以便Windows了解代码中的下一项”以及用于指定开头和结尾的常规引号一个字符串值,它甚至可以使调试问题更容易一些。

但最终每个人都应该为他们做些什么。我的方法需要更多的输入,并可能会混淆不知道什么是chr()的人。另一个需要较少的打字,但需要您对字符串进行更多的心理分析。它们都不是真的对或错。