You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用ProcessStartInfo执行CMD命令时报找不到文件异常

问题原因
  • for属于CMD的内置命令,并非独立的可执行文件,你直接将CMD命令作为ProcessStartInfo构造函数的第一个参数(目标进程路径)传入,系统无法找到对应可执行文件,因此抛出找不到文件的异常。
  • ProcessStartInfo的参数使用逻辑错误,该构造函数第一个参数为要启动的可执行程序路径,第二个为传入该程序的运行参数,你将两条CMD命令分别填入两个参数的写法不符合API要求。
  • 命令本身存在多余空格的语法错误:/ f、% i、set CID =% i、% CID %中的多余空格会导致命令逻辑错误,即使通过CMD直接运行也无法得到正确结果。
解决方法

正确的做法是启动cmd.exe程序,将你的命令通过/c参数传入CMD执行,修正后的代码如下:

// 拼接要执行的CMD命令,移除所有多余空格
string cmd = @"for /f ""delims="" %i in ('""C:\Program Files (x86)\AnyDesk\AnyDesk.exe"" --get-id') do set CID=%i & echo %CID%";
ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", $"/c {cmd}")
{
    UseShellExecute = false,
    RedirectStandardOutput = true,
    CreateNoWindow = true
};
var proc = Process.Start(psi);
// 等待命令执行完成后再读取输出,避免内容不全
proc.WaitForExit();
string output = proc.StandardOutput.ReadToEnd();
Console.WriteLine(output);
额外注意
  • 请确认你的设备上C:\Program Files (x86)\AnyDesk\AnyDesk.exe路径真实存在,如果安装路径自定义过需要对应修改。
  • 如果你后续将该命令写入批处理文件运行,需要将命令中的%i替换为%%i。

内容的提问来源于stack exchange,提问作者r.Sayt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:27:02