ここのコードを使用して、ac# コンソール アプリケーションから .bat ファイルを実行しようとしています: バッチ ファイルを呼び出した後、WaitForExit でサービスがハングアップします
ケビンのソリューションはちょっと機能しますが、.bat ファイルの一部のコマンドは何らかの理由で無視されますが、.bat ファイルを手動で実行すると、すべてのコマンドが正常に機能します。
たとえば、コンソール アプリから .bat を実行している間は xcopy コマンドは機能しませんが、start コマンドは正常に機能します。
なぜこれが起こるのか分かりますか?
ps最近、プログラムがコマンドプロンプトから起動されている場合、うまく機能することがわかりました。どうして?それでも自動実行する必要があるため、これでは問題は解決しません。
また、exeファイルをクリックして起動すると、出力が表示されます
xcopy フォルダー1 フォルダー2
ただし、コマンドプロンプトから起動した場合、出力は次のように表示されます
xcopy フォルダー1 フォルダー2
smth/smth.smth がコピーされました
....
5 個のファイルがコピーされました。
そして、それは実際にコピーされています。
proc.StartInfo.FileName = target;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit
(
(timeout <= 0)
? int.MaxValue : timeout * NO_MILLISECONDS_IN_A_SECOND *
NO_SECONDS_IN_A_MINUTE
);
errorMessage = proc.StandardError.ReadToEnd();
proc.WaitForExit();
outputMessage = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();