バッチファイルの基本

 今回はバッチファイルの話です。
 バッチファイルって聞いたことあるけどよく分からない、という方も多いかと思います。
 なのでさくっと説明してしまいますと、バッチファイルというのは「コマンドを並べたテキストファイル」のことです。
 こういうものは習うより慣れろ、というわけで早速例を示してみたいと思います。
 「hoge.txtを一つ上のフォルダにコピーして、元のファイルを削除」という処理を行うバッチファイルを作ってみましょう。
 「移動でやればいいじゃん」? はい、それももっともですが、いい例が思い付かないんです。許してください^^;
 さてこの場合、以下のようなバッチファイルになります。

copy hoge.txt ..
del hoge.txt

 copyというのは、その名の通りファイルをコピーするコマンドです。引数を二つ取り、第一引数を第二引数の場所へコピーします。
 ..というのは一つ上のフォルダを表します。「C:\Windows\system32」の「..」なら、「C:\Windows」ですね。
 よって初めの行は、「一つ上のフォルダにコピーする」ということになりますね。
 delというのはファイルを削除するコマンドです。
 これで、「hoge.txtを一つ上のフォルダにコピーして、元のファイルを削除する」という処理になりますね。
 あとはこれを、実際に実行させるだけです。
 上のバッチファイルを適当な名前で保存し、コマンドプロンプトから実行してみましょう。ただし、拡張子は「.bat」です。
 実行する際の注意ですが、プロンプトには「カレントディレクトリ」というものがあります。
 これはつまり、「自分が今いるディレクトリ」のことです。(ディレクトリはフォルダと同義です)
 普通なら、プロンプトを立ち上げると「C:\なんちゃら>」と表示されていると思います。この「C:\なんちゃら」の部分がカレントディレクトリです。
 これを移動させるのはcdというコマンドです。Change Directoryの略ですね。
 なお、ドライブ間の移動はcdでは行えず、「ドライブ名:」というコマンドによって行います。Eドライブに移動したいときは「E:」です。
 これはドライブごとにカレントディレクトリが設定されているためで、一旦カレントディレクトリを変えた後にドライブを変更し、また戻ってくるとカレントディレクトリが保存されているのが分かると思います。
 ちなみに、cdコマンドに何も引数を渡さずに実行すると現在のカレントディレクトリ(って意味被ってるな……)が表示されます。
 また、cdコマンドに/dというオプションを付けて実行すると、先程不可能と言ったドライブ間移動もできるようになります。

 話を戻しましょう。バッチファイルを実行させるときは、バッチファイルの拡張子「.bat」は不要です。これはexeと同じですね。
 さて、きちんと実行されましたでしょうか? ……あ、同じフォルダにhoge.txtがないと怒られますよ^^;

 ところで、バッチファイルを実行して何か思ったことはありませんか?
 大体の環境では、以下のように出力されたはずです。

copy hoge.txt ..
      1 個のファイルをコピーしました。

del hoge.txt

 この、copyだのdelだの、「そんなんわかっとるわ!」というメッセージはどうにかならないものでしょうか。
 それを解決するのが、@という文字です。
 これを先頭に付けると、そのコマンドは非表示になるのです。試しに付けてみましょう。

@copy hoge.txt ..
@del hoge.txt

 すると、以下のように表示されたと思います。

      1 個のファイルをコピーしました。

 まず、余計なコマンド表示がなくなりました。一歩前進ですね。
 しかし、今回のような短いバッチファイルは構いませんが、もっと数百行にも及ぶような巨大なバッチファイルだったら……?
 とても、@を付けていく気にはなれないでしょう。
 そこで、別の解決策があります。
 echoというコマンドがその策です。このコマンドを「echo OFF」のように使うと、なんと先程と同様に、コマンドの表示を消すことができるのです!
 しかし、そのechoコマンド自身が表示されてしまっては意味がない。そこで、echo OFFの前に@を置くことで、echoコマンド自身が表示されるのを防ぐことができます。
 これによって、今まで全てのコマンドに@を付けていたのを、ファイルの先頭に「@echo OFF」と書くだけで済ませられるようになりました。
 これは大きな一歩ですね。
 さっそく入力してみましょう。以下のようになります。

@echo OFF
copy hoge.txt ..
del hoge.txt

 いかがでしょうか。ファイルの小ささ故に先程よりタイピング量は増えているものの、「めんどくさい」という感じはしない作業だったのではないでしょうか。
 プロンプトには、今回用いたもの以外にも様々なコマンドがあります。それを知るには、helpコマンドを使ってみるとよいでしょう。
 これを使うと、コマンドの一覧とその説明を表示してくれます。
 また、特定のコマンドについて知りたいのでしたら、そのコマンドの直後に「/?」というオプションを付けて実行してみるとよいでしょう。
 例えば、copyコマンドなら「copy /?」と入力することで、copyコマンドのヘルプが表示されます。
 この辺りは覚えておいて損はないので、よく覚えておくとよいと思います。
 「@」「echo OFF」「help」「/?」ですね。ここ、テストに出ますよ。(何のテストだ

 今回はバッチファイルの基礎のような、それでいて前提知識が必要な、よく分からない話でした(ぁ
 バッチファイルについてはネットにかなり詳しく載っていますので、グーグル先生に聞いてみるといいですよ(何
 次回は、いよいよバッチファイルを応用します。
 バッチファイル一つで、プロンプトがグッと便利になりますよ!

 ※補足
 もし、「コピーしました」の文も邪魔だ、というのでしたら、copyコマンドの後に「> nul」を付けると消すことができます。
 「copy hoge.txt .. > nul」と言った感じですね。
 これはリダイレクトという奴です。後々説明しようかと思います。


戻る