バッチファイルで入力文字列の形式をチェックする

今回はバッチファイルネタです。


バッチファイルを書いていると、ユーザに文字列を入力してもらいたい時があります。
更に、入力された文字列の形式をチェックしたい時があります。
よくあるケースは、入力された文字列が日付の形式になっているか?等ですかね。


下記のように、findstr コマンドを用いることでチェックを行うことができます。

rem FileName: validate.bat

:loop
set str=
set /p str="YYYYMMDD 形式で日付を入力してください(Enter:終了): "
if "%str%" == "" goto end

echo %str% | findstr /r "\<[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\>" >nul 2>&1
if errorlevel 1 (
	echo %str% : NG
) else (
	echo %str% : OK
)

echo.
goto loop

:end

findstr コマンドに /r オプションを与えることにより、正規表現による検索処理を行わせています。
findstr コマンドについては、下記を参照してください。
Findstr


実行例です。

C:\bat>validate.bat
YYYYMMDD 形式で日付を入力してください(Enter:終了): abcd
abcd : NG

YYYYMMDD 形式で日付を入力してください(Enter:終了): 123456
123456 : NG

YYYYMMDD 形式で日付を入力してください(Enter:終了): 2015/04/26
2015/04/26 : NG

YYYYMMDD 形式で日付を入力してください(Enter:終了): 2015-04-26
2015-04-26 : NG

YYYYMMDD 形式で日付を入力してください(Enter:終了): 20150426
20150426 : OK

YYYYMMDD 形式で日付を入力してください(Enter:終了):

C:\bat>

「20150426」のみ OK 判定になっており、形式をチェックできていることが分かります。