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> "temp.txt"の代わりにparse.exe>"c:\ temp.txt"

一時ファイルが作成されます。ただし、parse.exeの出力は含まれていません。

4

5 に答える 5

2
 process.StartInfo.WorkingDirectory = @"c:\";

すぐに機能するバッチファイルに絶対パスを設定することもできます

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

于 2012-08-26T15:35:11.033 に答える
2

バッチファイルで完全修飾ファイル名を使用することから始めます。つまり、

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

于 2012-08-26T15:22:06.277 に答える
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 に答える