1

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

4

5 回答 5

2

我首先在批处理文件中使用完全限定的文件名,即

c:\parse.exe > "c:\temp.txt"

于 2012-08-26T15:22:06.277 回答
2
 process.StartInfo.WorkingDirectory = @"c:\";

您还可以在批处理文件中设置绝对路径,该路径将立即生效

pathofparse\parse.exe yourpath\"temp.txt";

于 2012-08-26T15:35:11.033 回答
1

看起来您正在重定向输出,这可能会阻止输出转到您希望创建的文件。

你试过了p.StartInfo.RedirectStandardOutput = false吗?

于 2012-08-26T15:12:30.717 回答
1

您可以尝试设置工作目录。该文件可能正在创建,只是不在您认为的位置。值得一试...

于 2012-08-26T15:34:22.890 回答
1

如果要将输出写入包含批处理文件的目录,最好明确指定目录,例如:

parse.exe > "%~dp0temp.txt"
于 2012-08-26T16:40:47.623 回答