ユーザー入力が必要なバッチ スクリプトがあります。ただし、許可したいのは だけですa-z, 0-9, @#$].~+-=_/\:;
。findstr を使用して、それ以外の文字がないことを確認する方法はありますか? ドキュメントを確認しましたが、これを実行する方法がわかりません。
私が持っているもの:
@echo off
echo Enter Username:
set /p usr=">"
答え1
findstr のデフォルトの正規表現モードを使用し、[文字クラス] を使用して、特別な意味を持つ文字をバックスラッシュでエスケープします。
:: Q:\Test\2018\12\07\SU_1381655.cmd
@Echo off
:loop
set /p "input=Enter data(a-z, 0-9, @#$].~+-=_/\:;.:)"
Echo:%input%|findstr /I "^[a-z0-9@#$\]\.~+\-=_\/\\:;]*$" >NUL 2>&1 && (
echo checked input ok
) || (
echo invalid input
)
goto :loop
すべての文字が正しいかどうかを確認してください。
小文字のみを意図している場合は、/i スイッチを削除してください。
可能なpoisenous
文字<|>&
は引用符なしでエコーされるため、バッチが壊れる可能性があります。