私がする必要があるのは、ユーザーの要求に応じて、C#2005GUIアプリに.batといくつかのVBScriptファイルを呼び出させることです。これは休暇が終わるまでの一時的な解決策であり、すべてC#で記述できます。VBScriptファイルを問題なく実行できますが、.batファイルを実行できません。C#アプリで「クリック」して.batファイルを実行すると、DOSウィンドウが非常に速く開閉し、テスト.batファイルが実行されません-「Windowsはbatを内部コマンドまたは外部コマンドとして認識しません」はエラーですDOSボックスに返されます。.batファイルをダブルクリックするか、コマンドプロンプトから手動で実行すると、実行されます。また、ユーザーの操作が必要でない限り、.batファイルをサイレントに実行する必要があります。このスクリプトは11k以上のファイルをネットワークマシン上のフォルダーにコピーし、場合によってはWindowsが「忘れる」
これまでのところ、私のC#ソースにはこれがあります:
Process scriptProc = new Process();
if (File.Exists("c:\\scripts\\batchfile1.bat"))
{
scriptProc.StartInfo.FileName = @"cscript";
scriptProc.StartInfo.Arguments = ("cmd.exe", "/C C:\\scripts\\batchfile1.bat"); // Wacky psuedo code //
scriptProc.Start();
scriptProc.WaitForExit(1500000);
scriptProc.Close();
}
if (!File.Exists("c:\\scripts\\batchfile1.bat"))
{
}
私はこのコードが機能しないことを知っています-しかしそれは本質的に私がそれをしたいことです。私が見ているのは、.batファイルの場合は次のようなものです。cmdを使用して.batを実行するようにシステムに指示する必要があると思います。私はこれをどのように行うかについて途方に暮れています。私はC#2003用のこのサイトをチェックアウトしました。私はC#に非常に満足しているので、あまり役に立ちません。
編集:ケビンの投稿を使用して、私はそれを再試行しました。その投稿と同じソリューションスクリプトですが、リダイレクトする必要がないため、変更しました。
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "C:\\scripts\\batchfile1.bat";
proc.StartInfo.RedirectStandardError = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit();