来自C#代码的CMD命令不工作(Windows)
我正在尝试从我的代码运行CMD。这是我在命令行中运行的行,当我手动运行它时,它会工作:来自C#代码的CMD命令不工作(Windows),c#,windows,cmd,command,command-prompt,C#,Windows,Cmd,Command,Command Prompt,我正在尝试从我的代码运行CMD。这是我在命令行中运行的行,当我手动运行它时,它会工作: C:\Dev\MySite\web\Website\comparison-tool\data\ & node csvToJson.js 这是我代码中的内容: string commandText = String.Format("/C {0}{1} & node csvToJson.js", root, csvToJsonFolder); Process.Start("CMD.exe", c
C:\Dev\MySite\web\Website\comparison-tool\data\ & node csvToJson.js
这是我代码中的内容:
string commandText = String.Format("/C {0}{1} & node csvToJson.js", root, csvToJsonFolder);
Process.Start("CMD.exe", commandText);
commandText的计算结果为/C:\Dev\MySite\web\Website\comparison tool\data\&node csvToJson.js
它运行正常,但似乎什么也没发生。命令提示符没有打开,因此我看不到可能发生的任何错误。该命令应该导致将文件写入特定文件夹,当我手动运行该命令时,文件会被写入,但当我运行代码时,文件不会被写入
编辑:我将代码更改为:
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = commandText;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
process.StartInfo = startInfo;
process.Start();
string result = process.StandardOutput.ReadToEnd();
结果只是一个空字符串。没有错误消息或任何东西。问题出在我的命令文本中,我忘记了“cd”。应该是“/C cd C:\Dev\MySite\web\Website\comparison tool\data\&node csvToJson.js”我猜命令提示符会将每个空格分隔的字符串作为一个单独的输入。您可以使用
ProcessStartInfo
告诉它将任何输出重定向到StreamReader
,然后您可以阅读控制台上的内容。在第一节中有一个例子。如果您可以看到错误,您可以进一步调试。您可以尝试使用ProcessStartInfo吗?就像这里的第二个答案,我试过了,标准输出只是一个空字符串,我只是想写这个。您最好使用/C cd/D C:\Dev\MySite\web\Website\comparison tool\data\&node.exe csvToJson.js
使其工作,即使您的C应用程序是从不同于驱动器C:的驱动器执行的。