VBScript问题

VBScript问题,vbscript,Vbscript,我尝试在vbscript中运行以下代码: ReturnCode = WshShell.Run("C:\Program Files\Virtutech\Simics 4.2\Simics 4.2.9\x86-win32\bin\simics.exe", 0, True) 当我运行这个脚本时,我得到一个错误,说它找不到文件。我认为问题在于路径中存在空格,但我不想将此应用程序重新安装到其他路径。我该怎么做 编辑:另外,我需要能够将参数放在可执行文件之后。参数是在引号内还是在引号外?您可以通过在路径周

我尝试在vbscript中运行以下代码:

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"

您可以通过在路径周围加引号来解决这个问题。但要做到这一点,你需要正确地避开它们,因此:

编辑:将路径保留在双引号中,并根据需要在其周围添加:

"""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)

将可执行文件放在双引号内:

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

我从来都不是代码中出现多个引号的超级粉丝,尽管这绝对是一个有效的解决方案

为了使我的代码更具可读性,我更愿意在添加引号时使用chr34,即ASCII版本的引号,该引号用于包围文件名或其他必须用引号括起来的字符串。它更多的是打字,但对我来说,它避免了像xyz12这样的行可能引起的潜在混乱

对于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)
在我看来,chr34成为了一种很容易在视觉上区分作为字符串定义一部分的引号(例如data file.txt)和Windows正确理解路径/文件名(在示例中显示为chr34)所需的引号的方法

如果您一致认为使用chr34表示这是一个引号,Windows需要它来理解代码中的下一项,而使用普通引号来指定字符串值的开头和结尾,那么它甚至可以使调试问题变得更容易一些


但最终每个人都应该做对他们有用的事情。我的方法需要更多的打字,可能会让不知道chr是什么的人感到困惑。另一个需要更少的输入,但需要您对字符串进行更多的精神分析。两者都不是对的或错的。

我从来都不喜欢代码中出现多个引号,尽管这绝对是一个有效的解决方案

为了使我的代码更具可读性,我更愿意在添加引号时使用chr34,即ASCII版本的引号,该引号用于包围文件名或其他必须用引号括起来的字符串。它更多的是打字,但对我来说,它避免了像xyz12这样的行可能引起的潜在混乱

对于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)
在我看来,chr34成为了一种很容易在视觉上区分作为字符串定义一部分的引号(例如data file.txt)和Windows正确理解路径/文件名(在示例中显示为chr34)所需的引号的方法

如果您一致认为使用chr34表示这是一个引号,Windows需要它来理解代码中的下一项,而使用普通引号来指定字符串值的开头和结尾,那么它甚至可以使调试问题变得更容易一些

但最终每个人都应该做对他们有用的事情。我的方法需要更多的打字,可能会让不知道chr是什么的人感到困惑。另一个需要更少的输入,但需要您对字符串进行更多的精神分析。两者都不是真的对或错。

请参阅。任何命令行参数都需要包含在第一个参数中,即引号中,紧跟在.exe之后。可能重复的请参见。任何命令行参数都需要包含在第一个参数中,即引号中,紧跟在.exe之后。可能的