在c#中执行批处理文件的次数与预期不符

时间:2012-08-26 15:10:37

标签: c# batch-file batch-processing

我在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的输出。

5 个答案:

答案 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"