• 締切済み

よく使うコードを外部ファイル化

VB.netを使用しているのですが、良く使用するコマンドなどを外部ファイル化して、使いまわしする事ってできるのでしょうか・・? Windowsのバッチファイル(.bat)だと、call aaa.batなどと書けば、aaa.batの内容を実行して変数などは保存されたまま戻って来てくれますよね。。これと同じ事が実現できればなぁと思っております。 お時間がある時で結構ですので、アドバイス頂けると嬉しいです。

  • Hasky
  • お礼率71% (10/14)

みんなの回答

  • K-1
  • ベストアンサー率21% (832/3844)
回答No.2

んー、「コマンド」とは関数モジュールのことでしょうか。 SubとかFunctionとか。 ソースコードの使いまわしが出来るか?ということでしょうか? それとも関数のライブラリ化をしたいということでしょうか。 バッチファイルの例を読む限り、DLLかライブラリを使いたいと思われますが。 VB.NETなら新規プロジェクトのテンプレートに「クラス ライブラリ」があります。 これでDLLが作成できるはず。 具体的な方法は書籍を探すか、検索してみてください。 そこらじゅうに載っています。

回答No.1

>Windowsのバッチファイル(.bat)だと、call aaa.batなどと書けば、aaa.batの内容を実行して変数などは保存されたまま戻って来てくれますよね。 これと意味が多少異なりますが、VB.netに限らず、頻繁に使用するコマンドをDLL化しておけば、使いまわしができます。 さらにVB6と違い.NETならば、DLLだけのバージョンアップも可能ですので、 「あっ、このコマンドも追加しよう」 と思った時、DLLを利用しているEXEまでのリコンパイルは求められません。

関連するQ&A

  • バッチファイルの変数引継ぎについて

    行き詰ってしまったので、どなたか知恵を授けていただければと思います。 現在、あるソフトウェアの「バッチモード」という機能を使用したバッチを作成していて、構文が > sdcmd batch ***.txt 上記のようにコマンドを羅列したテキストファイルを指定した実行コマンドになります。 sdcmd以降はソフト指定のコマンド以外は使用できず、変数設定ができない為に変数設定とログ保存を兼ねて上記コマンドを記載したバッチを > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > call aaa.bat %* >> aaa.log 2>&1 という内容の呼び出しバッチを作成たのですが、テキストファイル内の変数が代入されずに 実行されてしまいます。 cmd上から直接 > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > sdcmd batch ***.txt >> aaa.log 2>&1 を実行しても変数の代入は行われませんでした。 cmd上で変数とテキストファイル内のコマンドを手動実行すれば変数は解決できます。 設定した変数を、テキストファイル内の変数値に代入する方法はあるでしょうか。

  • iniファイルを呼ぶバッチファイルの実行

    VB2008でProcess.Startを使ってバッチファイルを実行する プログラムを作成しました。 バッチファイルではini.batという変数に値を設定するファイルを 最初にcallしています。 しかし設定されずにエラーになってしまいます。 どうしたらうまく動くのでしょうか。 バッチファイルをクリックで実行すると正常に動作します。

  • 外部ファイルを実行するには?

    お世話になります。 vb6で外部のバッチファイルを起動して、それを動作させようとしているのですが、うまくいきません。特にエラーにはならず、一瞬DOSプロントは立ち上がるんですが、バッチ処理しているログにはなにも書き込まれません。普通にバッチファイルをダブルクリックさせるか、コマンドからバッチファイルの入っているフォルダまでいって、バッチファイルを実行すれば書き込まれるのですが。 どこがまちがっているのでしょうか?shellじゃなくて、違う関数を使わなければいけないのでしょうか?ご教授よろしくお願いします。 なお、vb6でテストするときは▸マークの実行を押して、テストしました。 サンプル用のものです。 ↓test 現在の時間をログに記入 ■バッチファイルの中身(test.bat) echo test >> log.txt time/t >> log.txt ■vb6のファイルの中身 Private Sub Command1_Click() Dim ret as long ret = shell("cmd.exe /c C:\test\test.bat",4) End Sub

  • vbsからバッチファイル実行時の引数渡しについて

    vbsからバッチファイルを実行する時に、引数として変数を渡すことはできるでしょうか。バッチファイルは引数を受け取れる記述をしています。変数の値は常に変動します。 CreateObject("WScript.Shell").Run "C:\HULTOOL\test.bat",0 を使ってtest.batを実行しています。"C:\HULTOOL\test.bat aaa(aaa)は固定の数値ですという書き方で、バッチファイルがaaaを第一引数として受け取れることは試してできました。しかし、aaaを変数にすると成功しません。何かよい記述方法はあるのでしょうか。ご教授ください。

  • バッチファイルコマンドについて

    毎度お世話になっております。 バッチファイルコマンドで、 わからないことがあります。 ご存知の方がおられましたら、 アドバイスを頂けますようよろしくお願い致します。 (質問内容) AAA.batファイル内からbbb.bat、ccc.batを同時にコールしたいのですが、 記述方法がわからないので教えて頂けますでしょうか。 よろしくお願い致します。

  • バッチファイルの環境変数を別のファイルにまとめたい

    コマンドプロンプトの勉強を始めましたが、分からない事があります。 a.ini------------ HENSU01=20081231 HENSU02=20090101 HENSU03=D:\temp ----------------- 例えば上記のような必要な環境変数をひとまとめしたa.iniがあるとします。 これをx.batとy.batを実行する時に参照して同じ環境変数として共用したいのですが、何か良い方法はありませんか? 別のバッチファイルからa.iniの内容で環境変数を設定後に'call x.bat'とすれば、上手く行きそうな気はするのですが、肝心の環境変数の設定の仕方が分かりません。 なお、a.iniにはsetコマンドは記述しないで、上記の形式のままで使用したいです。 どなたか具体的ご教授お願いします。 よろしくお願いします。

  • コマンドプロンプトのcallと遅延展開

    こんにちは。 コマンドプロンプトにおいて、call と !・・・! による環境変数の遅延展開について、 1つ疑問に思う事がありましたので、質問させて頂きました。 まず、以下のようなバッチスクリプトtest.batを作成しました。 -------------------------------------------------------- @echo off setlocal setlocal enabledelayedexpansion set aaa=XXX^|cat echo 1:!aaa! call echo 2:!aaa! echo 3:%aaa% call echo 4:%aaa% --------------------------------------------------------- これを実行した結果、以下のようになりました。 --------------------------------------------------------- C:\Users\kei >test.bat 1:XXX|cat 3:XXX 4:XXX --------------------------------------------------------- callは、それ以降のコマンドラインを2度解析するだけなのに、 なぜ、call echo 2:!aaa! の行を実行した時に、何も出力されないのでしょうか?

  • バッチファイルでXCOPYコマンドが使えない

    XCOPYコマンドを使ったバッチファイルを作成しましたが、 バッチファイルの保存場所によって、 実行できたり、エラーになったりします。 エラーになる場合のメッセージは以下になります。 「'XCOPY' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 環境変数の設定は問題ありません。 ご教授ください。 よろしくお願いします。

  • バッチファイルで他のバッチファイルを呼び出した後、元に戻ってこれない。

    バッチファイルで他のバッチファイルを呼び出した後、元に戻ってこれない。 バッチファイルでほかのバッチファイルを呼び出した後の処理で困っています。 どうぞ教えてください。 「A.bat」というバッチファイルを実行すると、「1.bat」というバッチファイルを 実行させ、「1.bat」の実行結果によって、処理を分岐させたいと考えています。 「1.bat」をcallで呼び出し、実行はできたのですが、「1.bat」は最後にエンタキーを 押さないと終了しないようになっています。そのため、「エンターキーを押して終了させて ください」というメッセージが出たままの画面で終わってしまい、「A.bat」に帰ってくることが できません。 「1.bat」は中身を扱えないようにしてあるバッチファイルなので、こちらでエンターキーを 押さずに終了させるようにはできません。何かいい方法はないでしょうか?

  • バッチファイルで、あるスクリプトがエラーになっても、つぎのスクリプトを実行させたい

    バッチファイルで、あるスクリプトがエラーになっても、つぎのスクリプトを実行させたいと考えています。 具体的には、 ■call.bat■ ****************** call 1.bat call 2.bat ****************** ■1.bat■ ****************** mkdir test1 ****************** ■2.bat■ ****************** mkdir test2 ****************** の3つのバッチファイルで、1.batがエラーになっても 2.batを実行させたいと考えています。 どうしたらいいのでしょうか。 よろしくお願いします。

専門家に質問してみよう