• 締切済み

コマンドプロンプトで文字列比較を行う

こんばんは。 コマンドプロンプトでプログラムを作成していてわからない点があるので質問させてください。 入力された文字列の長さが4桁でないときにプログラムを終了させたいのですがその方法がわかりません。 ためしにワイルドカードを用いて以下のように作成してみたのですが これだと4桁でも条件分岐ではじかれてしまいます。 なにかいい方法がありましたらご教授ねがいたいです。 よろしくおねがいします。 **サンプル** ************************************************************ set /p date=移動したいファイルの月日を4桁で入力してください : rem 入力された文字列が4桁でないときは終了 if "%date%"=="" ( echo 月日を入力してください。 Pause exit /b ) if not "%date%"=="????" ( echo 入力文字列%date%は不正です。終了します。 Pause exit /b ) **********************************************************

みんなの回答

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.1

まず、DATEは予約語なので使わない方がいいですね。 entdateとします。 それと、正規表現ではなくて、本当はWSH等を使用して暦日チェックをした方がいいと思います。 これだと0231もOKになってしまうので。 (その後の処理で行うならいいですが) ********************************************* @echo off set /p entdate=移動したいファイルの月日を4桁で入力してください : rem 入力された文字列が4桁でないときは終了 if "%entdate%" == "" ( echo 月日を入力してください。 Pause exit /b ) rem 5桁目がないか確認 if not "%entdate:~4,1%" == "" ( echo 入力文字列%entdate%は不正です(文字数が多すぎます)。終了します。 Pause exit /b ) rem 正規表現を使用して暦上日チェックを行う echo %entdate% | findstr [0-1][0-9][0-3][0-9]>nul if not "%errorlevel%" == "0" ( echo 入力文字列%entdate%は不正です(暦上日ではありません)。終了します。 Pause exit /b ) rem ERRORLEVELを0に戻しておく time /t>nul echo チェック正常 pause *********************************************

関連するQ&A