12

私がする必要があるのは、ユーザーの要求に応じて、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();
4

2 に答える 2

12

これがあなたが探しているものです:

バッチファイルを呼び出した後、サービスがWaitForExitでハングアップする

サービスがファイルを実行できない理由についての質問ですが、実行に必要なすべてのコードが表示されます。

于 2008-12-26T17:41:03.653 に答える
0

宛先がフォルダーまたはファイルであるかどうかをユーザーに尋ねるバッチファイルに関して発生している問題については、事前に答えがわかっている場合は、次のようにすることができます。

宛先がファイルの場合: echo f | 【バッチファイルパス】

フォルダの場合: echo d | 【バッチファイルパス】

基本的に、「エコー」の後の文字をバッチファイルの入力にパイプするだけです。

于 2012-03-09T16:55:32.597 に答える