Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自C#代码的CMD命令不工作(Windows)_C#_Windows_Cmd_Command_Command Prompt - Fatal编程技术网

来自C#代码的CMD命令不工作(Windows)

来自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

我正在尝试从我的代码运行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", 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:的驱动器执行的。