findstr 測試是否包含其他字元感謝給定的批次

findstr 測試是否包含其他字元感謝給定的批次

我有一個需要用戶輸入的批次腳本。然而,我只想允許a-z, 0-9, @#$].~+-=_/\:;。有沒有辦法使用 findstr 來確保除了這些字元之外沒有其他字元?我已經檢查了文檔,但無法找到完成此操作的方法。

我擁有的:

@echo off
echo Enter Username:
set /p usr=">"

答案1

使用 findstr 預設正規表示式模式,並使用帶有反斜線的 [characterclass] 轉義具有特殊意義的字元。

:: 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字元<|>&不加引號地回顯,它們可能會破壞批次。

相關內容