ルーティン作業を自動化できるWindows伝統のRPAツール「バッチ」入門 その1マウスのいらないコマンドプロンプトの世界

よく利用するコマンドなどをバッチファイルにしておくと、毎回のようにコマンドを書く手間を省くことができる。また、タスクスケジューラーを利用した自動化を行う際もバッチファイルは活用できる。バッチファイルを理解する手始めとして、よく利用するコマンドをバッチファイルにしてみよう。

» 2021年12月10日 05時00分 公開
[竹内充彦]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

コマンドの入力が苦手だって? コマンドの入力が苦手だって?
毎回同じコマンドを入力するのって面倒ですよね。バッチファイルにしておけば、ダブルクリックで実行できるので、パソコンが苦手な場合でも実行可能だ。でも、バッチファイルってどうやって作るの?

繰り返し使う長いコマンドをバッチファイルで手軽に実行

 コマンドと複数のオプション、対象となるファイルパスで長くなったコマンドラインをキーボードから打つのは煩わしい。毎日同じ処理を行わなければならない場合は、なおさらだ。

 日本語入力でも、短文登録しておけば数文字の入力で目的の文が呼び出せるというのに、長いコマンドラインを短縮入力する方法はないのだろうか。実は「バッチファイル」という仕組みを使えば、定型のコマンドラインを短い入力で実行できる。

 バッチファイルはあらかじめテキストファイル中にコマンドライン入力を記述しておくというものなので、単純な使い方ならば難しいことは何もない。バッチファイルは複数のコマンドを束ねて(batch=束ねる、1回分にまとめるという意味)実行できる仕組みである。本来は、一連のコマンド処理を一括実行する目的で使われるものだが、今回は取りあえず、1つのコマンドを短い入力で実行するために使ってみよう。

【今回のミッション】

 上司がニコニコしながらこちらに近づいてきた。

「今度入った新人社員にさぁ、報告書をテンプレからコピーして使わせたいんだけど、スマホ世代なので難しい操作はムリだってさ。何とかならないかなぁ?」

 いわく、ドラッグ&ドロップだとテンプレファイルを移動して直接編集してしまう人がいる他、複数のウィンドウを開くと混乱してしまう人もいるからダメ。コマンドラインは長いキー入力なのでもっての外だという。アイコンのダブルクリックとかで何とかならないか、と。

 さてどうしよう?


 普段からよく利用している次のようなコマンドライン操作があるとしよう。

C:\Work>copy ..\テンプレ\報告書テンプレ.xlsx 報告書.xlsx


報告書テンプレ.xlsxを報告書.xlsxにコピーするコマンド

 コマンドの意味は、カレントフォルダ(上のコマンドでは[Work]フォルダ)の親フォルダ(..)の下にあるフォルダ[テンプレ]の中に保存してあるExcelのブックファイル「報告書テンプレ.xlsx」を、カレントフォルダ(.)に「報告書.xlsx」というファイル名でコピーして使うというものだ。なお、こういうときはファイルをExcelブック形式ではなくExcelテンプレート形式で保存しておいた方が適切という話は、ここでは置いておく。

 この入力を短くしたければ、あらかじめメモ帳で、このコマンドラインの内容を記述した短めのファイル名を持つテキストファイルを作成し、拡張子を「.bat」にして保存しておく。

 そして、そのファイルを実行すればいい。Windows OSでは拡張子「.bat」のファイルがバッチファイルとして認識され、そのベース名をコマンドラインから入力することで、記載された内容が実行される。

 先ほどの例では、次のような内容のファイルを作成して「cpex.bat」というファイル名で保存する。

copy ..\テンプレ\報告書テンプレ.xlsx 報告書.xlsx


cpex.batファイルに記述するコマンド

 そして、コマンドラインからベース名を指定すれば実行される。

C:\>cpex[Enter]


cpex.batを実行するコマンドライン

バッチファイルの作成と実行(1) バッチファイルの作成と実行(1)
メモ帳を起動して、実行したいコマンドラインを論理的な1行([Enter]キーで改行しない)で記述する。
バッチファイルの作成と実行(2) バッチファイルの作成と実行(2)
メモ帳で[ファイル]メニューの[名前を付けて保存]を選び、ファイル名に拡張子「.bat」を付けて保存する。このとき[すべてのファイル(*.*)]を選び、文字コードに[ANSI]を選ぶ。
バッチファイルの作成と実行(3) バッチファイルの作成と実行(3)
コマンドを記述したバッチファイル「cpex.bat」を実行すると、バッチファイル内に記述したコマンドが実行される。ファイル名を簡潔なものにしておけばキーボードからの入力の煩わしさが軽減する。

 注意が必要なのは、バッチファイル中に記述する際、コマンドの途中で[Enter]キーを使って改行しないことだ。コマンド実行時のオプションやファイル名の指定、パイプラインやリダイレクトなどの記述も含めて、論理的な1行に納めておく必要がある。

 なお、1行でコマンドが完結しているというルールさえ守れば、バッチファイル中に記述するコマンドは複数あっても構わない。その場合は、1行目から順に実行されていく。

 このバッチファイルは、アイコンのダブルクリックで実行することもできる。ダブルクリックすると、一瞬コマンドプロンプトのウィンドウが表示され、コマンドが実行されてからウィンドウが閉じる。

バッチファイルはファイルアイコンのダブルクリックでも実行できる バッチファイルはファイルアイコンのダブルクリックでも実行できる
エクスプローラーからダブルクリックして実行する場合、バッチファイルが保存されているフォルダがカレントフォルダとなる。これならWindows OSのコマンドに詳しくない人にもコマンドを使ってもらえる。

バッチファイルの処理内容を分かりやすくする

 先のバッチファイルは、動作内容が分かっている自分で使うなら問題はない。しかし、誰かに使ってもらうとなると、もう少し動作に関する情報を使い手に知らせた方が親切だろう。また、後からバッチファイルの中身を見る人のために記述内容にコメントを加えておくのもいい。そこでメッセージの表示やコメントを加えたものを次に示す。

@echo off

rem 処理内容の説明表示

echo [テンプレ]フォルダから報告書をコピーします。</p>
echo 中止するには[Ctrl]+[C]キーを押してください。</p>
echo 続けるには、その他のキーを押してください。</p>

pause

rem copyコマンドの実行

copy ..\テンプレ\報告書テンプレ.xlsx 報告書.xlsx

echo 報告書をコピーしました。</p>


処理内容を分かりやすく書き換えたcpex.batファイルの中身

説明表示とコメントを加えたcpex.batを実行する 説明表示とコメントを加えたcpex.batを実行する
バッチファイルで何をするのかを表示し、誤って実行した人のために、中止できるタイミングも設けている。このように途中で処理が一時停止し、キーの入力を求められる。ここでは[スペース]キーを押したので、バッチファイルの処理がそのまま実行されている。

 ファイル内の各記述について解説しよう。

 行頭の「@」コマンドは、「@」に続くその行の文字列を、実行時に画面に表示しないというもの。

 「echoは」、文字列を画面に出力したり、バッチファイル実行時の画面出力を制御したりするコマンドで、「echo off」と指定すると、以降のバッチファイルに記載されている記述内容や実行したコマンドの出力を画面に表示しない。ただし、その場合も「echo」コマンドに続けて指定した文字列は出力される。「echo off」を解除するには、「echo on」と指定する。

 「rem」コマンドは、バッチファイル中にコメントを記述するためのもので、行頭に「rem」コマンドがあると、その行は全てコメント文と見なされる(たとえコマンドの記述があっても実行はされない)。

 「pause」コマンドは、バッチファイルの処理を一時停止する。何かキーが押されると処理を再開する。ここでは、誤って実行した際などに中止できるタイミングとして利用している。

 バッチファイルの処理を途中で終了させるには[Ctrl]+[C]キーを押す。ちなみにバッチファイルだけでなく、これまで本連載で紹介してきたコマンドの中断も[Ctrl]+[C]キーで行える。コマンドの処理を強制的に終了させるキーとして覚えておこう。

[Ctrl]+[C]キーでバッチファイルの処理を中断する [Ctrl]+[C]キーでバッチファイルの処理を中断する
[Ctrl]+[C]キーは、バッチファイルだけでなく本連載でこれまでに紹介してきた各種コマンドも中止できる。[Ctrl]+[C]キーを押すとバッチ処理を中断するかどうかのメッセージが表示される。[Y]キーを押すと中止、[N]キーを押すと処理を続行する。copyコマンド実行前にバッチファイルの処理を中止すれば、コピーは実行されない。

 バッチファイルは、前述のようにWindowsアプリケーションと同様、ファイルアイコンをダブルクリックして実行することもできる。また、ドラッグ&ドロップにも対応するが、今回は、データを読み込むようなコマンドではないため、これについては次回紹介する。

 バッチファイルは単純にコマンドを実行するだけでなく、繰り返しや分岐といった処理や、変数の利用もできるため、プログラミングも行える。次回以降は、その「バッチプログラミング」の世界を味わってみよう。

今回紹介したコマンド

バッチファイル、@、echo、rem、pause


Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

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

メールマガジン登録

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