はじめに
こんにちは。この記事では、普段の作業を自動化し、効率化することを目的として、Windows バッチファイル(以下、バッチファイル)の作成方法を演習していきます。バッチファイルはインストールが不要かつ、少ないコード量で実行することが可能となりますので、手軽に作成できます。ただ、少し書き方には癖があるので、演習を通して慣れていっていただければと思います。
レッスン1.事前準備
バッチファイルはメモ帳でも作れるため、特に準備無しでも作成が始められます。
今回の演習では、それほど多くのコードを書くことはないのでメモ帳を使うこととしますが、将来的に多くのコードを書く際には何らかのテキストエディタがあると便利です。
レッスン2.簡単なコマンドを実行してみる
まずは、簡単なコマンドを実行してみましょう。バッチファイルでは命令のコードを「コマンド」と呼びます。まずはメモ帳を開き、下記のコマンドを入れてください。
echo on dir pause
ここで各コマンドの説明を少し加えておきます。
echo on
これは実行する際に、コマンド自体を表示するかどうかを設定するためのコマンドです。一方でecho offと書くと、コマンドは表示されず実行された結果だけが表示されます。この一文が省略されてもecho onとして扱われますが、今回は演習なので明示的にあえてonを書いています。通常はコマンドの中身まで見える必要はないのでoffとすることが多いです。
dir
このファイル置かれているディレクトリの情報を表示します。ファイルやフォルダの一覧、ファイルサイズなどが表示されます。
pause
通常、コマンドが全て実行された後、即座にウィンドウは消えてしまいます。今回は演習ですので実行された結果が見たいのであえてpauseを置いて実行を止めています。
メモ帳に上記のコードをコピーできたら「名前を付けて保存」をしますが、その際必ずファイル形式を「すべてのファイル(*.*)」にした上で拡張子は「.bat」で保存してください。名前は「test.bat」としましょう。すると、保存したファイルのアイコンがギアのマークになっているかと思います。これでバッチファイルの作成は完了です。
では、どこか任意のディレクトリ(例えばデスクトップ等)に、先ほど作ったバッチファイルを置いてダブルクリックして実行してみましょう。即座に実行結果が表示されます。
コマンドプロンプトが起動し、ファイル、ディレクトリの作成日時や、一覧が出ると思います。このような結果が出れば成功です。Enterキーなどを押せばバッチファイルが終了します。
このように、コマンドを書き込んだら実行はファイルをダブルクリックするだけで、非常に手軽に実行することができます。
レッスン3.コマンドを組み合わせて使う
では、バッチファイルの作成と実行方法が分かったところで、もう少し進んだ操作をしてみましょう。まずは、先ほどのコマンドを少し変更し、指定したファイルがあるかどうかをチェックしてみたいと思います。テキストエディタで「test.bat」を開いて少し変更してみましょう。(ダブルクリックすると実行されてしまうので、メモ帳から開くようにしましょう)
下記のように変更します。
echo on if exist 1.txt ( echo File found! ) else ( echo File not found! ) pause
今回はifを使って条件分岐を作りました。「if exist」の後にファイル名を書くと、バッチファイルが置かれているディレクトリに指定された名前のファイルがあるかどうかをチェックしてくれます。存在するときはif側、存在しない時はelse側が実行されることになります。
それぞれ書かれているechoという文は、後ろに書いた文字がそのまま表示されるコマンドになります。
では「test.bat」を実行してみましょう
「1.txt」というファイルは無いので「File not found!」と表示され、見つかりません。では検索対象のファイル「1.txt」を準備します。「test.bat」が入っているフォルダにテキストファイルを作ってみます。中身はファイル名だけ入れておきましょう。
「1.txt」という名前で保存したら、もう一度「test.bat」を実行してみましょう
今度は見つかりましたね。では、さらに見つかったファイルをコピーしてリネームしてみましょう。また「test.bat」を開いてコードを変更します。
echo on if exist 1.txt ( echo File found! copy 1.txt 2.txt ) else ( echo File not found! ) pause
ファイルが見つかったときにはコピーします。無かった時にはエラーを表示して何もしません。
コピーのコマンドの使い方は以下です
copy [コピー元] [コピー先]
コピー元とコピー先に違う名前を入力すると、コピーと同時にリネームが行われます。今回は「1.txt」を「2.txt」とリネームしてコピーします。
では、text.batを実行してみましょう。
コピーが成功したようです。念のため正しくファイルがコピーされたか、ファイルの中身もチェックしてみましょう。「2.txt」を開いてみてください。
「1.txt」と入っているということは、「1.txt」がコピーされたファイルであることが確認できました。
次にディレクトリを作成してファイルを移動する操作を行ってみたいと思います。text.batを開いて、以下のコードに変更してみてください。
echo on if exist 1.txt ( echo File found! mkdir folder1 move 1.txt folder1\3.txt ) else ( echo File not found! ) pause
では、今回新たに出てきたコマンドを説明します。
mkdir [ディレクトリ名]
これは指定した名前のディレクトリを作成するコマンドです。コマンドで使われることを想定し、ディレクトリ名にはできるだけスペースを入れないようにするのがオススメです。どうしても区切りが欲しい場合はアンダースコア”_”を入れて表現することをお勧めします。
move [移動元] [移動先]
ファイルの移動コマンドです。先ほど使ったCopyとフォーマットは同じです。移動先に違う名前を入れれば、リネームが同時に行われます。
それでは実行してみましょう。
ディレクトリを見てみましょう。「folder1」というディレクトリができています。
「folder1」の中にある「3.txt」を開くと、こちらも問題なくコピーされたものだと確認できました。
このように、単純なファイルやフォルダの操作は非常に少ないコマンドで簡単に実現できることが分かったかと思います。これらの操作を組み合わせれば、手動では難しいような大量のファイルを容易に扱うことができます。
レッスン4.バッチファイルを作る場合の注意
ここではバッチファイルを作る上で、注意しておいた方が良い点を説明していきます。
その1 カレントディレクトリを意識する
バッチファイルを作るうえで注意すべき点があります。それは「カレントディレクトリ」です。カレントディレクトリとは、コンピュータ内で現在自分が居る場所を示します。
Windowsのスタートメニューからコマンドプロンプトを開くと
のように”>”の左側にディレクトリのパスが表示されています。これがカレントディレクトリです。現在は「CドライブのUsersというフォルダ」に居ることがわかります。
バッチファイルでコマンドを書いていくときには、このカレントディレクトリがどこかを意識する必要があります。
今回の演習ではバッチファイルが置かれているディレクトリ内で完結するコマンドだったので、特に意識しませんでした。
バッチファイルは自分自身が置かれているディレクトリが、カレントディレクトリになる性質を持っています。しかし、コマンド量が多くなってくると、カレントディレクトリを間違って、意図しない結果が起こることが良くあります。
そのため、ディレクトリを行き来するコマンドが多い場合には、分かりやすいよう起動時に明示的にカレントディレクトリを指定するという方法があります。
cd /d [カレントディレクトリ]
カレントディレクトリの変更。/dを入れるとドライブをまたいだ移動ができます。
「ファイルが見つかりません」という旨のエラーに遭遇したら、まずはパスが間違っていないかと一緒に、カレントディレクトリがどこかを確認してみましょう。
その2 絶対パス指定は必要以上に使わない
パスには相対パスと絶対パスがあります。
例えば、
パス: C:\practice\test ディレクトリの中身: test.bat 1.txt
というパスがあったとします。ここで「test.bat」を実行すると
C:\practice\test
がカレントディレクトリになるので、コマンド内では
copy 1.txt 2.txt
というように書けば同じディレクトリ内にある「1.txt」を扱うことができます。これを「相対パス指定」と言います。
一方で、
move C:\practice\test\1.txt C:\practice\test\2.txt
というようにフルパスで書くこともできます。これが「絶対パス指定」という書き方です。
相対パスも絶対パスも、一見実行結果は同じですが、適切に使われないと色々と不都合が出てきます。それは、他の人に配布する場合などです。ある人はDドライブで実行したい場合があるかもしれませんし、Cドライブが無いかもしれません。そういう環境で実行されてしまうと、コマンドがエラーになってしまいます。
配布を前提としたコマンドは、誰の環境でもエラーとならないように意識する必要がありますので、絶対パスは本当に必要な場面以外は使わないようにしましょう。
おわりに
今回はWindowsバッチファイルの基礎を学びました。冒頭にも書きましたように、バッチファイルは手軽に作れて、実行環境を意識せずに配布もできますので、使い勝手が良いです。そのため、様々な用途に応じたバッチファイルを作ることで、仕事を効率化することができます。バッチファイルにはまだまだ数多くのコマンドが用意されておりますので、次回はもう少し進んだ内容を扱ってみたいと思います。
最後までお読みいただき、ありがとうございました。
No Comments