Windowsのバッチファイルの基本的な使い方

LINEで送る
Pocket

win54-1
例えば、日々更新する複数のデータを、毎日バックアップする作業を考えます。作業としては、まずその日のバックアップを保存するフォルダを作成して、更新するデータを選択して、作成したフォルダにコピーします。

ちょっとした作業ですが、毎日忘れずに実行するとなると大変です。そんな単純作業は自動化したくなります。ちょっとした作業を自動化するには「バッチファイル」が便利です。

スポンサーリンク

1.バッチファイルとは

「バッチファイル」とは一連の手順を記述した実行ファイルです。ここの手順というのは、「コマンドプロンプト」で打ち込んでいくコマンドを、順番に記述したものです。

実行ファイルですので、コマンドラインから指定するか、GUIでダブルクリックすることで、1行ずつコマンドを実行してくれます。

同じ手順を何度も繰り返す単純作業に向いている方法です。先ほどの日々のバックアップを「コマンドプロンプト」で実行する場合を考えます。

例として『Dドライブの「data」フォルダの内容をすべて、Dドライブの「backup」フォルダに日付を表す8桁の名前をつけたフォルダにコピーする』とします。

まず日付のサブフォルダを作成します。今日の日付は「%date%」で表示されますが、そのままでは「2015/12/05」のように、「/」が入っています。

フォルダ名として「/」は使えませんので、「%date:~0,4%%date:~5,2%%date:~8,2%」として数字だけを取り出します。

日付のディレクトリを作成するコマンドは「mkdir d:¥backup¥%date:~0,4%%date:~5,2%%date:~8,2%」となります。

サブフォルダも含めて、フォルダの内容をすべてコピーするには「xcopy」が便利です。「data」フォルダの内容を、今作ったサブフォルダにすべてコピーするコマンドは、「xcopy /d /e d:¥data d:¥backup¥%date:~0,4%%date:~5,2%%date:~8,2%」です。

win54-2

このコマンドを毎日打ち込むのは大変です。そんなコマンドを、1度記述しておけば、自動で実行できるのが「バッチファイル」なのです。

2.バッチファイルの作成

「コマンドプロンプト」で実行できれば、もう「バッチファイル」は簡単です。コマンドを順番にテキストファイルに記述して、ファイルの拡張子を「バッチファイル」を表す「.bat」(または「.cmd」)とするだけです。

テキストファイルの作成方法はいくつか考えられますが、ここではWindows標準の「メモ帳」を使います。「メモ帳」は「すべてのアプリ」などの「Windowsアクセサリ」に入っています。ダブルクリックして起動します。

先ほど「コマンドプロンプト」で打ち込んだコマンドを記述します。

mkdir d:¥backup¥%date:~0,4%%date:~5,2%%date:~8,2%
xcopy /d /e d:¥data d:¥backup¥%date:~0,4%%date:~5,2%%date:~8,2%

win54-3

「ファイル」タブの「名前をつけて保存」を選択します。

「文字コード」が「ANSI」になっていることを確認します。「ファイルの種類」を「すべてのファイル(*.*)」に変更して、デスクトップなど保尊したい場所を選択して、「ファイル名」を拡張子「.bat」で指定します。

win54-4

「バッチファイル」が作成できました。

win54-5

3.バッチファイルの活用

先ほどのバッチファイルの最後に「shutdown /p」と書いておけば、バックアップした後にシャットダウンを実行することができます。これをシャットダウンアイコンとして利用することで、バックアップ忘れを防止することもできます。

また、アクティブディレクトリ環境で、グループポリシーが利用できるのなら、シャットダウンスクリプトに組み込むことも可能です。

さらに、ある時間に起動するように設定することも可能です。

また、今回は(多少強引に)単純な手順を記述しましたが、条件分岐(IF)や繰り返し(FOR)などを使った少し込み入った処理も可能です。

「バッチファイル」は、あくまでもちょっとした処理に向いています。あまりにもややこしい処理や、GUIが適している処理を無理して「バッチファイル」を使うと苦労することになります。

とは言っても、ちょっとして処理にはお手軽で、コマンドプロンプト感覚で作成して、コンパイルなどの処理も必要ありませんので、覚えておくと便利です。

スポンサーリンク

LINEで送る
Pocket

Facebookでのご購読が便利です