0

c# からバッチ ファイル (または cmd) を実行する必要があります。私のコードはこの単純です:

 Process.Start(@"C:\b.bat");
Process.Start(@"cmd.exe");

C# や他の多くのサイトで Executing Batch Fileも試しましたが、問題が構文に関連しているとは思いません。

上記のいずれかの行でエラーが発生します。これをグーグルで検索しましたが、特定の問題の解決策が見つかりませんでした:

タイプ 'System.ComponentModel.Win32Exception' の未処理の例外が System.dll で発生しました 追加情報: 指定された実行可能ファイルは、この OS プラットフォームに対して有効なアプリケーションではありません。

奇妙なことに、これらのコードは問題なく実行されます。

Process.Start(@"IExplore.exe");
Process.Start("notepad");

私はVisual Studio 2012を実行しており、x86用にコンパイルしていますが、私のOSはWindows 7 64ビットで、問題があるかどうかはわかりません.プログラムの他のすべては正常に動作します.

どんな助けでも大歓迎です!

4

3 に答える 3

1

あなたの問題は、で不明なプロセスを開始しようとしていることにあると思いますProcess.Start(@"C:\b.bat")。これを行うときは、次を使用します。

        string cmd = "/C b.bat";
        var m_command = new System.Diagnostics.Process();
        m_command.StartInfo.FileName = @"cmd.exe";
        m_command.StartInfo.Arguments = cmd;
        m_command.Start();

/C は、終了後にアプリケーションを閉じます。したがって、本質的に上記のコードは次のようになります。

  1. cmd.exeプロセスを開始する
  2. 引数を実行します (この場合は/C b.bat)
  3. 続行する前にプログラムの実行が完了するまでm_command.WaitForExit()待機する場合も追加できます。b.bat
于 2013-06-07T21:11:17.977 に答える
0

Process.Start(@"C:\b.bat");動作するはずですが、ルートに配置すると問題が発生する可能性があります。プロジェクトディレクトリにbatファイルを移動してみて、ファイルへの絶対パスを入力してください。たとえば、私はちょうど成功しましたProcess.Start(@"""C:\dev\ConsoleApplication1\ConsoleApplication1\test.bat""");

于 2013-06-08T03:16:50.857 に答える
0

次のコマンドで 32 ビット コマンドを実行して問題を解決しました。

proc.StartInfo.FileName = @"C:\windows\system32\cmd.exe";

于 2013-06-12T21:04:34.087 に答える