delims和goto不工作(批处理)

时间:2012-11-26 15:04:09

标签: batch-file

有人可以告诉我为什么以下不起作用......

:PHASE_ONE
SET /P input_text=   ENTER PASSWORD:

for /f "delims=1234567890" %%A in ("%input_text%") GOTO PHASE_ONE

我试图避免数值

1 个答案:

答案 0 :(得分:1)

你的语法错了。您在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.