連載
» 2018年03月08日 05時00分 公開

Tech TIPS:【Windows 10対応】Windowsのバッチファイルの基本的な使い方 (2/4)

[打越浩幸,デジタルアドバンテージ]

バッチファイルへの引数

 前ページの例では、引数を持たない簡単なバッチファイルを作成した。だが、実際には引数を利用するバッチも少なくないだろう。

 バッチファイルへの引数を参照するには、「%1」「%2」……「%9」という表記を利用する。これにより、最大で9つまでの引数を参照できる(「%0」はバッチファイル名そのものを表す)。

バッチファイルへの引数 バッチファイルへの引数
バッチファイルに渡された引数は、「%1」「%2」……という表記で参照できる。ここでは2つの引数を処理しているが、3つ目以降は無視している。引数の数が不定の場合は、Shiftコマンドなどを使って適切に処理する必要がある。

 10個目以降の引数を参照したい場合は「Shift」というコマンドを併用する。Shiftを実行すると、最初の引数(%1)が削除され(シフトアウトされ)、2つ目以降の引数が1つずつずれて、「%1」「%2」……「%9」で参照できるようになる。後述するifやgotoなどの制御構造と組み合わせれば、全ての引数を、例えば「%1」だけで順に参照できるようになる。

 バッチファイルへの引数はそのまま使うだけでなく、例えばパス名ならそれを分解して、パス部分、基本ファイル名部分、拡張子部分などに分解することもできる。詳細は「help call」コマンドを参照していただきたい。

 バッチファイルに渡された引数を全部まとめて扱うには、「%*」という表記を利用する。バッチファイルへの引数を、全てそのまま、起動するコマンドの引数として渡すような場合に利用できる。

バッチファイルからGUIのプログラムを起動する

 バッチファイルでは通常、CUIのコマンドを起動することが多いだろう。しかしGUIを使うWindowsのアプリを起動することもできる。例えば、以下は「WZ Editor 9(WZ Software)」という(筆者がいつも使っている)テキストエディタを起動するバッチの例である。

 エディタを起動するバッチファイルの例 エディタを起動するバッチファイルの例
起動したいプログラムのパスに、引数を渡しているだけのバッチである。いちいちフルパスで入力するのが面倒なプログラムや、オプション指定が多かったり、分かりづらかったりするプログラムは、バッチにしておくと簡単に起動できる。

 ユーザーがインストールしたWindowsのアプリケーションは、通常は「C:\Program Files」や「C:\Program Files (x86)」などの下にインストールされていて、起動するには[スタート]メニューからGUI操作で目的のメニュー名を探さないと起動できないことが多い。

 だが、こうやってバッチファイルを用意しておくと、普段からコマンドプロンプトを使っている場合は、単に「wz」というコマンド名を入力するだけですぐに起動できて便利である。Office Word 2016をよく使うなら、「"C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE"」を起動するようなword.cmdを作っておいてもよいだろう。

 任意のプログラムを起動するには、このように行の先頭に実行ファイルのフルパス名を記述し(空白文字が含まれる場合は、上の例のように引用符で囲むこと)、さらに引数を渡すために、行末に「%*」という表記を追加しておく。

startコマンドでGUIのプログラムを起動する

 Windows OSのアプリを上のようなバッチファイルで起動した場合、目的のアプリケーションのウィンドウだけでなく、実行中のバッチファイルのウィンドウ(実際にはコマンドプロンプトの黒いウィンドウ)も表示される。このウィンドウはアプリケーションを終了するまで表示されたままになっており、これでは見栄えが悪いし、余計なウィンドウが表示されることによって、操作ミスを起こす可能性もある。

 このような状況を避け、コマンドプロンプトのウィンドウを出さずに目的のアプリケーションを起動するには「start "" <パス名> %*」というコマンドにすればよい。「startコマンド」はコマンドプロンプトの内部コマンドで、指定された項目を起動するためのものである。第1引数には、アプリケーションのタイトルを設定する文字列を指定できるが、不要なら「""」という文字列にしておけばよい。startコマンドはデフォルトでは、起動したプログラムの実行終了を待たないので、バッチファイルはすぐに終了し、コマンドプロンプトの黒いウィンドウを見ることはない。

startを使ってプログラムを起動する startを使ってプログラムを起動する
startコマンドを使ってプログラムを起動すると、コマンドプロンプトのウィンドウを表示させずにプログラムを実行できる。

 startコマンドは、実行ファイルだけでなく、さまざまな特殊フォルダを開けるなど高機能である。startコマンドについては、次の記事や「help start」のヘルプを参照のこと。

 startコマンドを使えば、例えばWebブラウザを起動することもできる。

Webブラウザを起動するバッチの例 Webブラウザを起動するバッチの例
バッチでWebブラウザを起動して、引数として指定した文字列を検索させてみる。検索文字列は、URL中の「q=〜〜」に渡している。

 このバッチファイルに文字列を付けて「ggl Windows 10」のように実行すると、Webブラウザが起動してGoogleのサイトで指定された文字列が検索される。このバッチの例では、検索対象の文字列は最大9つまで指定できる。

バッチで利用できる環境変数について

 バッチでは、環境変数やバッチ用のローカル変数などが幾つか定義されており、それらを参照したり、(単純ながら)文字列演算や数値演算させたりすることもできる。

 環境変数やローカルの変数は「%tmp%」のように、変数名を「%」で囲むと参照できる(変数名は大文字/小文字は区別されない)。環境変数の一覧は「set」コマンドで参照できる。あらかじめ定義されている代表的な変数の意味については、次の記事や「help set」コマンドの説明を参照のこと。

 「%date%」や「%time%」などに対して文字列演算や数値演算などを使うと、現在の日付や時刻、コンピュータ名、ドメイン名などをベースにしたファイル名を合成できる。これを使って、例えば自動的に日付別にファイルをバックアップしたり、ログファイルを整理したりするコマンドを作成できる。次の記事の例などを参考にしていただきたい。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。