2011-03-01 54 views
1

我試圖在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://stackoverflow.com/questions/1340355/launch-programs-from-vbscript) – 2015-03-12 08:07:58

回答

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

把三雙引用路徑。

1

把雙引號的可執行文件內:

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

我從來沒有出現在我的代碼多個報價的忠實粉絲,但它絕對是一個可行的解決方案。

當我添加用於圍繞文件名或其他字符串的引號時,我更願意使我的代碼對我來說更具可讀性,即使用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()的人。另一個需要較少的打字,但需要您對字符串進行更多的心理分析。它們都不是真的對或錯。