我正在尝试从C#程序执行一个简单的批处理脚本。
这是一个最小的例子:
批处理文件
TIMEOUT /T 30 >nul
EXIT /B 1
C#计划
static void Main(string[] args)
{
Process process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = false;
process.StartInfo.FileName = "D:\\xxx.bat";
process.Start();
string output = process.StandardOutput.ReadToEnd();
bool exit = process.WaitForExit(120000);
Console.WriteLine(output);
}
输出
"\r\nC:\\Users\\xxx\\bin\\Debug>TIMEOUT /T 30 \r\n\r\nWaiting for 30 seconds, press a key to continue ...\r\n\r\nC:\\Users\\xxx\\bin\\Debug>EXIT /B 1 \r\n"
我希望批处理脚本不产生输出(由于nul
命令的timeout
重定向),但它仍然存在。输出包含程序路径和命令文本。这是为什么? (它是否输出脚本跟踪,例如bash -x
?Google没有告诉我如何禁用它?
答案 0 :(得分:1)
将输出重定向到nul
应该只隐藏重定向命令的输出。
相反,您可以在bat文件的开头添加@echo off
。
这将:
<子> From "Echo", Technet 子> 的
阻止批处理文件中的所有命令(包括回显关闭 命令)从屏幕上显示。