我正在尝试使用此处的代码通过 ac# 控制台应用程序执行 .bat 文件: Service hangs up at WaitForExit after calling batch file
凯文的解决方案有点工作,但我的 .bat 文件中的一些命令由于某种原因被忽略了,但是当我手动执行 .bat 文件时,所有命令都可以正常工作。
例如,xcopy 命令在从控制台应用程序执行 .bat 时不起作用,但 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();