从C#运行CMD.exe时,系统找不到指定的文件

9 c# cmd

从C#控制台程序运行以下代码时收到错误消息.

"该系统找不到指定的文件"

这是代码:

System.Diagnostics.Process.Start("C:\ Windows\System32\cmd.exe/c");

奇怪的是,当我省略/ c开关时,命令可以运行!?!

我有什么想法我做错了吗?

Dav*_*ton 11

Process.Start将文件名作为参数.将参数作为第二个参数传递:

System.Diagnostics.Process.Start(@"C:\Windows\System32\cmd.exe", "/c");
Run Code Online (Sandbox Code Playgroud)


Aar*_*ght 7

好吧,首先,你是一个硬编码的路径,它已经注定要打破某人的系统(不是每个Windows安装都在C:\Windows).

但问题是这些反斜杠被用作转义字符.有两种方法可以像这样写一个路径字符串 - 要么转义反斜杠:

Process.Start("C:\\Windows\\System32\\cmd.exe", "/c");
Run Code Online (Sandbox Code Playgroud)

或者使用@禁用反斜杠转义:

Process.Start(@"C:\Windows\System32\cmd.exe", "/c");
Run Code Online (Sandbox Code Playgroud)

您还需要/c作为参数传递,而不是作为路径的一部分 - 使用Process.Start如上所示的第二个重载.