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字符<|>&不带引号而被回显,因此它们可能会破坏批次。

相关内容