|
分類:[C#]
いつも参考にさせていただいております。
今回、C#でちょっと行き詰っている点があり、質問させてもらうことにしました。
Visual Studio 2022 .NET 8.0 C# Windows11
C#アプリケーションから外部プログラム(バッチファイル)を実行させようとしていて、以下のように記述しています。
string exeBatchFile = AppDomain.CurrentDomain.BaseDirectory + @"run.bat";
ProcessStartInfo pInfo = new() { FileName = exeBatchFile, CreateNoWindow = true, UseShellExecute = true, };
Process p = Process.Start(pInfo); p.WaitForExit();
バッチファイルの中身はこんな感じです。
C: cd C:\temp\test cal_program.exe
Fortranで作成されたDOS版の古いプログラム "cal_program.exe" が存在しているフォルダーに移ってから実行させるようにしています。
このコードを実行すると「System.ComponentModel.Win32Exception」「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」というエラーが発生します。メッセージを見るとバッチファイルが別プロセスで使用中というメッセージみたいで、バッチファイルも中身の記述が消えてファイルサイズがゼロになってしまっています。
いろいろと試しているのですが、どうも原因がわかりません。何かヒントでもわかる方がおられましたら、ご教示ください。よろしくお願いします。
|