我有一个第三方可执行命令,它被捆绑到我的 winform 应用程序中。该命令放置在执行应用程序的目录中名为“tools”的目录中。
比如我的winform mytestapp.exe放在D:\apps\mytestapp目录下,那么第三方命令的路径就是D:\apps\mytestapp\tools\mycommand.exe。我正在使用 Application.StartupPath 来识别 mytestapp.exe 的位置,以便可以从任何位置运行它。
我通过启动一个进程 - System.Diagnostics.Process.Start 并使用命令提示符执行相同的命令来执行此命令。要传递其他参数来运行命令。
我面临的问题是,如果我的应用程序和命令的路径中没有任何空格,它可以正常工作
例如,如果我的应用程序和命令如下所示,它可以工作 D:\apps\mytestapp\mytestapp.exe D:\apps\mytestapp\tools\mycommand.exe "parameter1" "parameter2" - 这个工作
但是,如果我在路径中有空格,则会失败
C:\Documents and settings\mytestapp\tools\mycommand.exe "parameter1" "parameter2" - 不工作 C:\Documents and settings\mytestapp\tools\mycommand.exe "parameter1 parameter2" - 不工作 "C:\Documents and settings\mytestapp\tools\mycommand.exe" "parameter1 parameter2" - 不起作用 "C:\Documents and settings\mytestapp\tools\mycommand.exe parameter1 parameter2" - 不起作用
我尝试使用双引号来执行如上所示的命令,但它不起作用。那么,如何执行我的自定义命令。对此问题的任何输入或解决方法?提前致谢。
这是启动该过程的代码
try
{
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
proc.WaitForExit();
}
catch (Exception objException)
{
// Log the exception
}