1

私は C# を使用するのが初めてで、現在は仕事の目的でのみ使用しています。現在、既存のアプリケーションを編集しており、作成したバッチ ファイルを呼び出す関数を追加しようとしています。このバッチ ファイルは CLI プログラムを実行し、いくつかのエラー レベル チェックを行って、プログラムが正しく実行されたことを確認し、コマンド プロンプトにエラーを報告します。この関数を C# で書き直すつもりはありません。このバッチ ファイルは、メイン プログラムを使用せずにこのタスクを実行するときに役立つからです。ただし、このバッチ ファイルの関数を C# で書き直す必要がある場合、どうすればよいかわかりません。

バッチ ファイルを実行するためにこのコードをオンラインで見つけましたが、非常にうまく機能します。

        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.EnableRaisingEvents = false;
        proc.StartInfo.FileName = "C:mypath\\mybatfile.bat";
        proc.Start();

このコードの唯一の問題は、アプリケーションをデプロイする前にこのパスを設定する必要があることです。このアプリケーションを他のいくつかのマシンに配布する予定であり、最終的にはさらに多くのマシンに配布する可能性があります。このパスをプログラムが保存されている場所に何らかの方法でリンクし、このバッチ ファイルをアプリケーションのリソースに含める方法を見つけたいと思っています。

これはすべて非常にベースから外れている可能性があり、提供された指示は大歓迎です。

私の経験のほとんどは uControllers に関するものであるため、C# やその他の PC プログラミングで使用される用語についての知識はほとんどありません。

編集: 私のプログラムは GUI .xaml アプリケーションです。また、忘れていたバッチ ファイルにいくつかのパスがあるため、C# でバッチ ファイルを書き直すことにオープンであることにしました。コマンド プロンプト アプリケーションを実行し、コマンド ライン引数を渡し、エラー レベルを簡単に確認する方法はありますか?

編集2:将来このスレッドに来る人を助けるためにこれを追加しています。これは、以下のDantixからの提案を使用して、最終的に問題を修正した方法です。

        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.EnableRaisingEvents = false;
        string bat_path = System.Reflection.Assembly.GetExecutingAssembly().Location; 
        proc.StartInfo.FileName = bat_path.Replace("\\myAppName.exe, "") + "\\myBatchFile.bat";
        proc.Start();

助けてくれてありがとう!

4

2 に答える 2

3

Application.StartupPath実行可能ファイル名を含めずに、アプリケーションを開始した実行可能ファイルのパスを取得するために使用できます。

あなたの要件によると、それはあるかもしれません
proc.StartInfo.FileName = Application.StartupPath +"\\mybatfile.bat";

于 2012-08-06T17:40:51.330 に答える
0

アプリケーション設定を使用することも、プログラムがコンソールアプリケーションの場合は、コマンドライン引数を使用することもできます。

于 2012-08-06T17:37:10.130 に答える