dja*_*fan 3 windows cmd if-statement batch-file
我正在尝试在 DOS 批处理脚本中比较需要区分大小写的字符串。我无法弄清楚如何在 IF 语句中打开区分大小写。这是我正在做的事情,它也在小写“-f”上匹配,我试图避免:
SET "ARGS=%*"
IF "%ARGS:-F=%" NEQ "%ARGS%" (
ECHO Pro option -F was found and not allowed.
GOTO :ERROR
)
Run Code Online (Sandbox Code Playgroud)
小智 6
IF /I
为简单起见使用……/I
如果指定了开关,则表示进行不区分大小写的字符串比较。
SET "ARGS=%*"
IF /I "%ARGS:-F=%" NEQ "%ARGS%" (
ECHO Pro option -F was found and not allowed.
GOTO :ERROR
)
Run Code Online (Sandbox Code Playgroud)
此外,通常的做法是使用==
而不是NEQ
因为后者用于数值比较。
IE
IF %ERRORLEVEL% EQU 0 (ECHO.Ok.)
Run Code Online (Sandbox Code Playgroud)
您的IF语句被正确执行区分大小写的搜索。问题是,您的扩展搜索和替换已损坏,如Endoro指出,和正确的形式"!ARGS:-F=!"
是大小写不敏感的。在扩展 ARGS 时,它首先查找-F
,不考虑大小写,然后将其替换为空。
不幸的是,这就是搜索和替换的工作方式。没有办法让它区分大小写。
您可以使用以下内容进行区分大小写的测试:
echo(!ARGS!|find "-F" >nul && echo Pro option -F was found.
Run Code Online (Sandbox Code Playgroud)