私のコードからCMDを実行しようとしています。これは私が私のコマンドラインで実行するラインである、と私はそれを手動で実行したときにそれが動作します:C#コードのCMDコマンドが機能しない(Windows)
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 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();
結果はちょうど空の文字列です。エラーメッセージなどはありません。
私はコマンドプロンプトが個々の入力として各スペース区切り文字列を取得すると思います。 – Media
'ProcessStartInfo'を使って出力を' StreamReader'にリダイレクトするように指示することができます。そしてコンソールが言ったことを読むことができます。 [This CodeProject article](http://www.codeproject.com/Articles/25983/How-to-Execute-a-Command-in-C)には、最初のセクションの例があります。エラーが表示される場合は、さらにデバッグすることができます。 – Equalsk
ProcessStartInfoを試してみてください。 2番目の答えはここのようにhttp://stackoverflow.com/a/1469790/2202391 – Daniil