2016-03-04 518 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