我在c:\上有一个批处理文件。当我通过双击它来执行它时,一切正常。
批处理文件的全部内容就是这个。
1)它在同一目录上执行.exe。 2)将输出重定向到同一目录中的文本文件。
.bat包含
parse.exe > "temp.txt"
但是,当我通过C#执行批处理文件时,根本不会创建temp.txt。(批处理文件似乎是运行的。)
我使用了以下C#代码。
Process p = new Process();
// Redirect the output stream of the child process.
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "c://resource//auto.bat";
p.Start();
// Read the output stream first and then wait.
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
我哪里错了? 谢谢你。
修改
当我将批处理文件更改为这样的内容时,
parse.exe> “c:\ temp.txt”而不是parse.exe> “TEMP.TXT”
创建临时文件。但是,它不包含parse.exe的输出。
答案 0 :(得分:2)
我首先在批处理文件中使用完全限定的文件名,即
c:\ parse.exe> “C:\ TEMP.TXT”
答案 1 :(得分:2)
process.StartInfo.WorkingDirectory = @"c:\";
您还可以在批处理文件中设置可立即使用的绝对路径
pathofparse \ parse.exe yourpath \“temp.txt”;
答案 2 :(得分:1)
看起来您正在重定向输出,这可能会阻止输出转到您希望创建的文件。
您是否使用p.StartInfo.RedirectStandardOutput = false
进行了尝试?
答案 3 :(得分:1)
您可以尝试设置工作目录。可能正在创建文件,而不是您想到的位置。值得一试...
答案 4 :(得分:1)
如果要将输出写入包含批处理文件的目录,最好明确指定目录,例如:
parse.exe > "%~dp0temp.txt"