您好我想从我的vb.net应用程序启动一个程序。
我遇到的问题是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()
execute =" C:\ Program Files(x86)\ Microsoft Visual Studio \ VB98 \ VB6.EXE" cmd输出=' C:\ Program'未被重新确定为内部或外部命令
然后我试着把Quotes(添加Char 34)改为befor而不是像这样的字符串:
执行="" C:\ Program Files(x86)\ Microsoft Visual Studio \ VB98 \ VB6.EXE""
仍然是相同的cmd输出。 所以我通过Shell尝试了命令,仍然是同样的问题。
有人可以告诉我如何传递带空格的consol命令吗? 更改目录是没有选择的,我必须在命令中添加更多目录。
答案 0 :(得分:0)
你走在正确的轨道上:要在参数中转义引号,你可以使用引号。但是,您还必须将转义的带引号的字符串放在一个字符串中,实际上,您最终会得到三个引号来定义执行。
execute = """C:\Program Files (x86)\Microsoft Visual Studio\VB98\VB6.EXE"""
引用1:开始字符串
引用2:逃避报价
引用3:引用
或者,在构建pi.arguments时将其转义:
pi.Arguments = "/K " + """" + execute """"
引用1:开始字符串
引用2:逃避
引用3:引用字符
引用4:结束字符串