はじめに
Windowsでバッチファイルをプログラミングする際の小技について纏めました。
環境
OS : Windows Server 2012 R2
前提
基本的なWindowsコマンド(DOSコマンド)の知識
参考
なし
解説
リダイレクション
- 標準出力の内容をファイル(result.txt)に出力します。
test.bat
@echo off
dir > result.txt
- 標準エラー出力の内容をファイル(result.txt)に出力します。
test.bat
@echo off
dir 2> result.txt
- 標準出力と標準エラー出力の内容を同時にファイル(result.txt)に出力します。
test.bat
@echo off
dir > result.txt 2>&1
イベントログ
- イベントログにメッセージを出力します。
※複数イベントを続けて出力する場合、処理が速すぎて順番通りにイベントビューアーに出力されない場合があります。その場合は、eventcreateの前に待ち処理を記述します。
オプション | 説明 |
---|---|
/id | イベントIDを指定します。 (1~1000) |
/l | ログ種別を指定します。 (APPLICATION, SYSTEM) |
/so | ソースを指定します。システムで予約されている名称は指定不可。 |
/t | レベルを指定します。 (ERROR, WARNING, INFORMATION) |
/d | イベントの説明を指定します。 |
test.bat
@echo off
eventcreate /id 999 /l application /so TEST_EVENT /t information /d "処理開始します"
空ファイル作成
- 何かの処理処理判定などを行う場合、一時的に空のフラグファイルを作成する場面がありますが、下記コマンドで作成可能です。
test.bat
@echo off
type nul > flag.txt
日付取得
- 出力ファイルに今日の日付を付加して保存したい場面がありますが、下記コマンドで実現可能です。
test.bat
@echo off
set YYYYMMDD=%DATE:/=%
dir > result.txt.%YYYYMMDD%
待ち処理
- バッチファイル内で待ち処理を行いたい場合は下記コマンドを使用します。
Windows VistaやWindows Server 2003以降は、timeoutコマンドが使用可能ですが、それ以前のOSについては、pingコマンドで代用していください。
test1.bat
@echo off
ping localhost -n 2
test2.bat
@echo off
timeout /t 5 > nul