有人可以告诉我为什么以下不起作用...
:PHASE_ONE
SET /P input_text= ENTER PASSWORD:
for /f "delims=1234567890" %%A in ("%input_text%") GOTO PHASE_ONE
我试图避免数值
有人可以告诉我为什么以下不起作用...
:PHASE_ONE
SET /P input_text= ENTER PASSWORD:
for /f "delims=1234567890" %%A in ("%input_text%") GOTO PHASE_ONE
我试图避免数值
你的语法是错误的。你DO
在你的GOTO
.
但是,您的逻辑也是错误的方式-您实际上是在确保密码只能是数字。
以下将其限制为字母,例如:
@ECHO OFF
:PHASE_ONE
SET /P input_text= ENTER PASSWORD:
for /f "delims=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" %%A in ("%input_text%") DO GOTO PHASE_ONE
ECHO.
但是,您最好使用以下FINDSTR
命令,例如:
@ECHO OFF
:PHASE_ONE
SET /P input_text= ENTER PASSWORD:
ECHO %input_text% | FINDSTR /I /R [0-9][0-9]*
REM If Errorlevel is 1, then no matching string has been found,
REM so we have a valid password (i.e. non-numeric).
IF ERRORLEVEL 1 GOTO Passed
GOTO PHASE_ONE
:Passed
ECHO Hooray - your password is fine.