クリックするだけで毎回同じ処理ができるバッチファイルは、PCを活用する上でとても便利です。さらにタスクスケジューラと組み合わせれば、Windowsの操作を自動化することもできるのです。今回はWindowsコマンドプロンプト上で動くバッチファイルの作り方から、タスクスケジューラの設定の仕方まで、Windows10を例にとってご紹介したいと思います。
コマンドプロンプトの基本の使い方を知りたい方は、こちらの記事をご覧ください。
目次
2.1 バッチファイル作成の流れと処理の一時停止コマンド
2.2 コメントの記述(表示)
2.3 Windowsの再起動とシャットダウン
2.4 繰り返しの処理(for文)
2.5 条件分岐の処理(if文)
2.6 任意のタグへのジャンプ(goto文)
2.7 ウェイト風の処理(timeout)
2.8 実行ログをテキストに出力する
2.9 実行時にコマンドを画面に表示したくない場合
3.1 Windows10版タスクスケジューラの起動方法
3.2 バッチファイルの設定
3.3 履歴を有効にして実行ログを確認する
3.4 実行されない場合の主な原因と対処法
3.5 タスクの変更
3.6 タスクの削除
1.バッチファイル・タスクスケジューラとは?
1.1 バッチファイルとは
バッチファイルとは、複数のコマンドの集合体で出来ているプログラムのようなもの(Linuxでいうところのシェルスクリプト)です。Windowsの場合、コマンドプロンプト(cmd.bat)上で動作します。何度も同じ操作を繰り返す予定があり、そのたびに何行ものコマンドを毎回打ち込むのは骨が折れます。そこでバッチにしておくと、ダブルクリックするだけで何度も同じ動作を繰り返し実行することができます。
さらにバッチファイルでは一行ごと実行する通常のコマンドとは違い、ループ(繰り返し)やif文(条件分岐)を使用することができます。
1.2 タスクスケジューラとは
タスクスケジューラとは、あらかじめ設定した時刻や時間間隔でプログラムやスクリプトを自動で実行する機能です。また、電子メールの送信やメッセージの表示も可能です。今回は、定時でスクリプトを実行する例をご紹介致します。
2.バッチファイルの作り方
2.1 バッチファイル作成の流れと処理の一時停止コマンド
バッチファイルの作成手順は、次の通りです。
(1)バッチファイルの作成環境
バッチファイルは、テキストデータで作成します。メモ帳でもいいので、使い慣れたテキストエディタを開いて下さい。
(2)コマンドを書く
コマンドプロンプトに入力するのと同様に、実行したいコマンドを順番に記述します。今回は、次のような動きをするバッチを作成します。
1.Dドライブに移動する
2.「Hoge」フォルダ配下の「Hogehoge」フォルダにカレントディレクトリ(作業ディレクトリ)を移動する
3.「ファイル名のみ出力」オプションを指定した上で、フォルダ内のファイル一覧を「result.txt」に出力する
4.何かキーを入力するまでポーズ(一時停止)する
5.コマンドプロンプトを閉じる
(4)完成したファイルをダブルクリックして実行
batファイルをダブルクリックすると、自動的にコマンドプロンプトが立ち上がって処理が進みます。
上図のバッチでは途中でキー入力待ちを行う「pause」コマンドを使用していますので、そこで処理がストップしています。「pause」コマンドでストップしている場合、何か適当なキーを押すと処理が次の行に進みます。次のコマンドが「exit」なので、コマンドプロンプトが終了して画面が閉じられます。
その他に使いどころの多いコマンドは、次の記事をご覧ください。
2.2 コメントの記述(表示)
処理を行うコマンド以外に任意のコメントを入力したい場合、「rem」コマンドを使用します。
なおログに出力するコメントを入力したい場合は、「echo」コマンドを使用します。「echo」コマンドの使用例については、後でログ出力の項目でご紹介します。
2.3 Windowsの再起動とシャットダウン
タスクスケジューラと組み合わせて使用する場合、便利なのがWindowsの再起動やシャットダウンのコマンドです。これらを使用することにより、常時つけっぱなしで処理をしているPCに対して毎日定時に再起動するよう設定したり、一定の時間後に自動的にシャットダウンするよう設定することができます。
■コマンドの書式
shutdown [オプション]
■主要なオプション
-f | 動作中のアプリケーションを全て強制終了する |
---|---|
-l | Windowsをログオフする |
-r | 再起動する |
-s | シャットダウンする |
-t [s] | s秒後にシャットダウンする |
■オプションの指定例
shutdown -s -t 10 | 10秒後にシャットダウンする |
---|---|
shutdown -f -r | アプリケーションを全て終了して再起動する |
2.4 繰り返しの処理(for文)
コマンドラインへの手入力にはないバッチファイルならではの機能として、先ほど挙げたポーズのほかに繰り返しや条件分岐、ウェイトの使用などがあります。
まず繰り返して処理を行いたい場合に使用する、「for文」についてご紹介します。
■コマンドの書式
for [オプション] %[変数] in ([名前条件]) do [コマンド]
[オプション]…for文のオプション
[変数]…適当な半角アルファベット1文字を指定
[名前条件]…処理対象とするディレクトリまたはファイル名の条件を指定(ワイルドカード使用可)
[コマンド]…ループで実行したいコマンドを指定(引数も使用可)
■for文のオプション
なし | 指定した名前条件と一致するファイルを処理対象とする |
---|---|
/d | 指定した名前条件と一致するディレクトリを処理対象とする |
/r [パス] | パスに指定したディレクトリの配下全てのファイルを処理対象とする |
■コマンドの書式
if [条件] ([真の場合に実行するコマンド]) else ([偽の場合に実行するコマンド])
※else以降を省略した場合、指定した条件が偽なら処理をスルーする。
■if文の主要な[条件]
[条件]には、次のような指定が可能です。
・比較演算 … 比較演算子で挟んで2つの値を比較し、正しければ真(TRUE)となる。
<比較演算子の例>
equ | 等しい |
---|---|
neq | 等しくない |
gtr | より大きい |
lss | より小さい |
geq | 以上 |
leq | 以下 |
・ERRORLEVEL [番号] … 指定した番号以上のエラーが発生した場合、真(TRUE)となる。
・EXIST … 指定したファイルが存在した場合、真(TRUE)となる。
・DEFINED … 指定した環境変数が停止されている場合、真(TRUE)となる。
なお全ての指定方法について、条件の前に「NOT」をつけることで「否定条件」にすることができます。
■コマンドの書式
goto [ラベル名]
~飛ばす処理~
:[ラベル名]
「goto [ラベル名]」の行に到達すると、間の処理をスキップして「:[ラベル名]」の行に処理が移ります。前述の「if文」と組み合わせて、結果が「偽(FALSE)」になった場合の処理へスキップするというような活用方法があります。
例:ERRORLEVELが一定値以上なら、エラー発生時の処理へジャンプする。
2.7 ウェイト風の処理(timeout)
Linuxのシェルスクリプトにおけるwait風の処理として、「timeout」コマンドがあります。指定した時間より前に何かキーが押された場合、待機を終えて次の処理に移ります。
■コマンドの書式
timeout [オプション]
■主要なオプション
/T [s] | s秒間処理をストップする |
---|---|
/NOBREAK | 停止中に何かキーを押されても、指定時間経過するまで待機を続ける |
2.8 実行ログをテキストに出力する
コマンドとその実行結果は、通常は画面上に表示されます。しかし自動実行などで正常に実行されたかを確認したい場合は、実行ログをテキストに出力することが可能です。
ログの出力方法には、二通りあります。
(1)バッチを複数用意し、callで呼び出す
あるバッチの中から他のバッチを呼び出すコマンドに、「call」があります。「call」を実行する際に「>」で出力先のテキストを指定しておくと、呼び出し中の実行内容が全てテキストに出力されます。
1.まず「bat1.bat」に、ログを出力したい処理を記述します。
2.次に「bat2.bat」に、「bat1.bat」を呼び出してログを出力する処理を記述します。
3.「bat2.bat」を実行すると、「bat1.bat」を実行した上でそのログが出力されます。
(2)1行処理するごとに、ログに追記する
ログに出力したい行全てに、ログに追記する処理「>>」を記述します。(1)の例と違い、cdコマンド等でカレントディレクトリが動くことが多々あります。そのため正しく1つのファイルに追記していくために、絶対パスを指定します。
この場合、出力されるのは「処理結果」のみです。そのため、コマンドの履歴は記録されません。なおコメントを出力したい場合は、「echo」コマンドを使用します。「ren」は出力されません。
2.9 実行時にコマンドを画面に表示したくない場合
実行時に画面上にコマンドを表示したくない場合は、次の2通りの対処法があります。
(1)「echo on/off」コマンドを使用する
「echo off」コマンドを実行すると、以降に実行されるコマンドは画面に表示されなくなります。「echo on」を実行すると、それ以降は表示されるようになります。まとまった範囲を非表示にしたい場合におすすめです。
(2)コマンドの頭に「@」を付ける
画面に表示したくないコマンドの頭に「@」を付けます。すると該当行だけコマンドラインに表示されなくなります。特定行だけを非表示にしたい場合におすすめです。
3.タスクスケジューラの使い方
3.1 Windows10版タスクスケジューラの起動方法
(1)スタートボタンを右クリックして出てくるメニューから選択するなどして、「コントロールパネル」を開きます。すると下図のような画面が開くので、表示方法を「小さいアイコン」に変更します。
3.1 Windows10版タスクスケジューラの起動方法
(2)小さいアイコンにすると「管理ツール」が一覧に出てくるので、選択します。
(3)管理ツールの中にタスクスケジューラがあるので、ダブルクリックすると起動します。
3.2 Windows10版タスクスケジューラの起動方法
(1)「タスクスケジューラ(ローカル)」を右クリックし、「基本タスクの作成」を選びます。
(2)タスクの名前と説明を入力します。
(3)タスクの実行間隔を選択します。
(4)タスクの初回実行時刻を設定します。(毎日などを選択すると、次回は翌日の同時刻になる)
(5)実行したい操作を選びます。バッチファイルを動かしたい場合は、「プログラムの開始」を選択します。プログラムの開始以外には、「電子メールの送信」と「メッセージの表示」が設定可能です。
(6)実行したいバッチをセットします。
(7)確認画面が表示されるので、内容をチェックして「完了」ボタンを押下します。
(8)「アクティブなタスク」の一覧に、先ほど追加したタスクが存在することを確認します。
3.3 履歴を有効にして実行ログを確認する
リストを取得するなど実行したら何か残る場合はいいですが結果が残らない処理の場合は、本当に実行されているのか不安になるのではないでしょうか。 そんな場合には「履歴」が利用可能です。
(1)履歴は「タスクスケジューラ ライブラリ」をクリックして表示される画面中央下エリアにある「履歴」タブから確認できます。デフォルトでは「無効」に設定されていますので、タブの名称も「履歴(無効)」になっています。
(2)画面右エリアの「操作」の項目の中にある「すべてのタスク履歴を有効にする」をクリックすると履歴の記録が有効になり、タブの名称が「履歴」に変化します。
3.4 実行されない場合の主な原因と対処法
タスクスケジューラで設定したはずのバッチが動いていない場合には、次のような原因が考えられます。
(1)「ユーザーがログオンしているときのみ実行する」設定になっている
(2)管理者権限が必要なバッチなのに「最上級の特権」で実行していない
管理者権限で実行しなければエラーになるコマンドを設定している場合、「最上位の特権で実行する」にチェックが入っていなければエラーになります。「コマンドプロンプト(管理者)」を使わなければエラーになるコマンドが含まれる場合は、忘れずにチェックを入れてください。
(3)実行ファイル名や各種パスが間違っている
実行したいバッチのファイル名などが間違えていると、履歴には正常終了と記録されるのに実際には動いていないという状態になります。またバッチ内に記述されたパスなどが間違えていてもエラーになりますので、パスやファイル名の綴りはよくチェックしておいて下さい。
なおコマンドプロンプトでは、ファイル名に半角スペースが含まれているとエラーになります。「””(ダブルクォーテーション)」で囲むとエラーを回避できるので、含まれているものがないかチェックしてみて下さい。
(4)実行するバッチファイルのファイル名に半角括弧「()」が含まれている
実行するバッチのファイル名に半角カッコが含まれていると、タスクが実行されません。現状回避策はないようですので、ファイル名には半角カッコを使用しないよう気を付けて下さい。
3.5 タスクの変更
変更したいタスクをダブルクリック(または右クリックしてプロパティを選択)すると、タスクの設定を変更することができます。
3.6 タスクの削除
削除したいタスクを右クリックすると、削除する項目が現れます。また画面右のコンソールからも、削除することが可能です。
4.Windows自動化で快適PCライフを
いかがでしたでしょうか。Windowsバッチをタスクスケジューラで実行すると、様々な処理を実行することができます。顧客先に毎日訪問しなくても定時作業をこなすことができるだけでなく、自宅でも自分が留守の間にPCに様々な作業をやらせておくこともできるのです。
とても便利なバッチ&タスクの合わせ技を、ぜひ試してみて下さいね。
当サイトプロエンジニアのコンサルタントが厳選したおすすめのフリーランス案件特集はこちら
特集ページから案件への応募も可能です!
実際にフリーランスエンジニアとして活躍されている方のインタビューはこちら