環境変数のしくみと使い方を確認したところで,実際のバッチ・ファイルの作成に取りかかろう。

ipconfigで全PCのネット設定を収集

 ここで作成するバッチ・ファイルは,自分のパソコンのネットワーク設定を表示するipconfig(アイピーコンフィグコマンド)を活用する。ネットワークにつながっているすべてのパソコンにバッチ・ファイルを配っておき,起動時に自動実行するようにする。バッチ・ファイルを起動時に自動実行するには,Windowsが標準で備えているタスク・スケジューラを利用すればよい。

 具体的な手順は,本連載の「運用管理コマンドの定期実行」で解説しているので,そちらを参考にしてほしい。そこでは,1台のパソコンに登録したタスク(自動実行するプログラムのこと)をネットワーク経由でほかのパソコンにコピーする方法も紹介しているので,そちらを参考にすれば全パソコンが起動時に自動実行するように設定できるはずだ。

 こうして登録作業を済ませれば,サーバー・マシンの共有フォルダに毎日その日付が名前になったディレクトリが作成され,そのディレクトリ内に各パソコンのコンピュータ名が付いたファイルが保存される。保存されたファイルの中身には,そのパソコンが実行したipconfigコマンドの結果が書き込まれている(図4)。

図4●作成したバッチ・ファイルを全クライアントに配り,設定情報を収集する
図4●作成したバッチ・ファイルを全クライアントに配り,設定情報を収集する
図5のバッチ・ファイルを各パソコンが起動時に実行するようにすれば,サーバーの共有フォルダに各パソコンの設定情報が集まる。しかも,日付ごとにディレクトリが分けられ,各ディレクトリ内にはコンピュータ名が付いたファイルが保存される。 [画像のクリックで拡大表示]

 つまり,ネットワークにつながっているWindowsマシンの設定情報が,日付ごとのディレクトリに分かれて,ファイル・サーバーに保存されるようになるわけだ。ネットワーク管理者は保存されたファイルの内容を見て,パソコンの設定がおかしくないかをチェックできる。「パソコンの挙動がおかしい」といったトラブルの連絡が入ったとき,そのパソコンがある場所にわざわざ出向かなくても共有フォルダのファイルを参照すれば済むので,大幅に手間が省けるだろう。

バッチ内から環境変数を呼び出す

 各パソコンに配って自動実行させるバッチ・ファイルの内容は,図5のようになる。上から順に見ていこう。

図5●各パソコンがipconfigコマンドの実行結果を共有フォルダの特定のディレクトリに書き込むバッチ・ファイルの内容
図5●各パソコンがipconfigコマンドの実行結果を共有フォルダの特定のディレクトリに書き込むバッチ・ファイルの内容
[画像のクリックで拡大表示]

 1行目の「@echo off」は,これまでの本連載記事に何度も出てきた。コマンド・プロンプト画面に実行中のコマンドを表示しない設定だ(1)。

 2行目はWindowsネットワークを操作するnet use(ネットユースコマンド)を使って,コンピュータ名がserverのサーバー・マシンが公開しているshare1フォルダをz:ドライブに割り当てている(2)。

 そして4行目がrundateという環境変数を新規に登録し,そこに日付をセットしている(3)。「set rundate=%DATE%」ではなく「set rundate=%DATE:/=%」と記述しているのは,日付の年月日の区切りに利用されている「/」を削除するためである。

 %と%の間で:の後ろに「○=□」のように記述すると,文字列に含まれる○が□に置換される。したがって,ここでは「/」を削除する指定になる。なぜ「/」を削除しているかというと,rundate変数にセットされた文字列をこのあとでディレクトリ名に使うためである。

 もう少し詳しく説明しておこう。バッチ・ファイルを実行した日付が2005年7月22日だったとき,「set rundate=%DATE%」と記述してあると,rundate変数には「2005/07/22」という文字列がセットされる。ところが,Windowsではディレクトリ名やファイル名に「/」が含まれているとエラーを起こす。そこで「/」を削除し,rundate変数に「20050722」のような文字列をセットするようにしているのである。

 5行目はipconfigコマンドの実行結果を書き込むファイル名を指定している(4)。バッチ・ファイル内で環境変数を呼び出すときは,「%環境変数名%」と記述する決まりなので,「%rundate%」の部分には日付が入り,「%COMPUTERNAME%」の部分にはコンピュータ名が入る。

 例えば,バッチ・ファイルを実行した日が2005年7月22日で実行したパソコンのコンピュータ名がTESTPCだったら,filenameという環境変数には「z:¥20050722¥TESTPC.log」という文字列がセットされる。これで,このあとで実行するipconfigコマンドの実行結果を保存するファイルの名前が決まる。