バッチファイルで入力文字列の形式をチェックする
今回はバッチファイルネタです。
バッチファイルを書いていると、ユーザに文字列を入力してもらいたい時があります。
更に、入力された文字列の形式をチェックしたい時があります。
よくあるケースは、入力された文字列が日付の形式になっているか?等ですかね。
下記のように、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 判定になっており、形式をチェックできていることが分かります。