2016-03-04 570 views
0

嗨我想從我的vb.net應用程序啓動一個程序。從vb.net執行CMD命令

我有的問題是commant中的空格。 我的代碼如下所示:

Dim p As New Process 
Dim pi As ProcessStartInfo = New ProcessStartInfo() 
execute = generateStatement(project) 
pi.FileName = "cmd.exe" 
pi.UseShellExecute = False 
pi.RedirectStandardOutput = True 
pi.Arguments = "/K " + execute 
p.StartInfo = pi 
p.Start() 

執行= 「C:\ Program Files文件(x86)的\微軟的Visual Studio \ VB98 \ VB6.EXE」 CMD輸出= 'C:\程序' 不是reconized爲內部或外部命令

然後我試圖把行情(添加字符34)befor和AFER串是這樣的:

執行= 「」 C:\程序文件(x86)\ Microsoft Visual Studio \ VB98 \ VB6.EXE「」

仍然是相同的cmd輸出。 所以我嘗試通過殼牌命令,仍然是同樣的問題。

有人能告訴我如何通過一個consol命令與空格嗎? 更改目錄是沒有選擇的,我不得不在命令中增加一些目錄。

+0

建議使用'System.Management.Automation' //使用PowerShell的 – Ian

回答

0

你是在正確的軌道上:爲了避免參數中的引號,你可以使用引號。但是,您還必須將已轉義的帶引號的字符串放在字符串中,因此實際上,最後會出現三個引號,用於定義execute。

execute = """C:\Program Files (x86)\Microsoft Visual Studio\VB98\VB6.EXE""" 

報價1:開始串

報價2:逃生報價

報價3:報價

或者逃避它,當你建立pi.arguments:

pi.Arguments = "/K " + """" + execute """" 

報價1:起始字符串

報價2:逃離

報價3:引號字符

報價4:端線

+0

謝謝。這對我有效。 將三個qoutes添加到字符串不在我的列表中。 ;) – Twiebie