我在VB.NET中开发了一个应用程序......
Dim DIAGTOOL_loc As String = Environment.CurrentDirectory & "\folder\file.exe"
Dim shellexec As New System.Text.StringBuilder
shellexec.AppendLine("@echo off")
shellexec.AppendLine("cls()")
shellexec.AppendLine(": begin()")
shellexec.AppendLine("cls()")
shellexec.AppendLine("START " & DIAGTOOL_loc.ToString)
shellexec.AppendLine("pause")
IO.File.WriteAllText("tester.bat", shellexec.ToString())
System.Diagnostics.Process.Start("tester.bat")
现在,当Comand Prompt打开时,它应该执行file.exe(DIAGTOOL_loc),但是当CMD加载时,它会显示“Windows找不到”C:\ Users \ ...“
但为什么呢?怎么了?当我输入Process.start(DIAGTOOL_loc)时,DIAGTOOL_loc变量中注册的路径有效,因此,文件存在...为什么cmd找不到它?
这个命令:
shellexec.AppendLine("START " & DIAGTOOL_loc.ToString)
应该打开file.exe ...但它不起作用......
答案 0 :(得分:0)
试试这个:
shellexec.AppendLine(String.Format("START """{0}""" , DIAGTOOL_loc))
还修复了批处理命令:
shellexec.AppendLine("cls")
shellexec.AppendLine(":begin")
shellexec.AppendLine("cls")
答案 1 :(得分:0)
在您生成的tester.bat
中,您将看到如下所示的行:
START c:\users\some folders\folder\file.exe
正如您所看到的,路径未被引用,因此如果路径包含空格(我怀疑您的路径包含空格),则会失败。
请注意,您的代码也可以更好地编写 - 使用System.IO.Path.Combine组合路径的各个部分:
Dim DIAGTOOL_loc As String = _
""" + Path.Combine(Environment.CurrentDirectory, "\folder\file.exe") + """