C# 从C运行CMD.exe时,系统找不到指定的文件#
我从C#控制台程序运行以下代码时收到错误消息 “系统找不到该文件 指定的“ 代码如下: System.Diagnostics.Process.Start(“C:\Windows\System32\cmd.exe /(c); 奇怪的是,当我省略/c开关时,命令可以运行C# 从C运行CMD.exe时,系统找不到指定的文件#,c#,cmd,C#,Cmd,我从C#控制台程序运行以下代码时收到错误消息 “系统找不到该文件 指定的“ 代码如下: System.Diagnostics.Process.Start(“C:\Windows\System32\cmd.exe /(c); 奇怪的是,当我省略/c开关时,命令可以运行 知道我做错了什么吗 您需要在路径之前添加@。如下所示:@“C:\Windows\System32\cmd.exe/C”有过多的start to take参数。用那个代替 System.Diagnostics.Process.Star
知道我做错了什么吗 您需要在路径之前添加@。如下所示:@“C:\Windows\System32\cmd.exe/C”有过多的start to take参数。用那个代替
System.Diagnostics.Process.Start(@"C:\Windows\System32\cmd.exe", "/c");
我认为问题在于您试图将参数(/c)作为路径的一部分进行传递 参数和文件名是Process类中两个不同的项 试一试
首先,您正在硬编码一条路径,这条路径已经注定会在某人的系统上中断(并非所有Windows安装都在
C:\Windows
)
但这里的问题是,这些反斜杠被用作转义字符。有两种方法可以编写这样的路径字符串-或者转义反斜杠:
Process.Start("C:\\Windows\\System32\\cmd.exe", "/c");
或者使用@
禁用反斜杠转义:
Process.Start(@"C:\Windows\System32\cmd.exe", "/c");
您还需要将
/c
作为参数传递,而不是作为路径的一部分传递-使用进程的第二个重载。如上所示启动。进程。启动将文件名作为参数。将参数作为第二个参数传递:
System.Diagnostics.Process.Start(@"C:\Windows\System32\cmd.exe", "/c");
我发现您发布的代码存在三个问题:
1) 您没有正确转义路径字符串
2) 您需要将/c参数分别传递给要执行的路径
3) 您假设运行此代码的每台计算机都安装了c:\windows
我建议写如下:
string cmdPath = System.IO.Path.Combine(Environment.SystemDirectory,"cmd.exe");
System.Diagnostics.Process.Start(cmdPath, "/c");
最简单的方法是使用addexistingitem和type将程序添加到解决方案中
System::Diagnostics::Process::Start("ccsetup305.exe");
似乎没有回答所问的问题。OP与命令行参数有关,您根本没有演示。我也有同样的问题,但来自命令行:U:\>cmd.exe Microsoft Windows[Version 6.1.7601]版权所有(c)2009 Microsoft Corporation。版权所有。系统找不到指定的路径。
System::Diagnostics::Process::Start("ccsetup305.exe");