这是删除当前文件夹中除bat文件之外的所有文件的方法:
forfiles /c "cmd /c if @isdir equ FALSE if /i not @ext==\"bat\" del @file"
Run Code Online (Sandbox Code Playgroud)
(我在这里找到它)。
正如我发现的那样,如果更改FALSE为false,它将无法正常工作。为什么?这是我的主要问题。
另外,旁边的问题。是正确的,第一个代码等于:
forfiles /c "cmd /c if @isdir==FALSE if /i not @ext==\"bat\" del @file"
Run Code Online (Sandbox Code Playgroud)
?
@isdir始终扩展为FALSE或TRUE大写。
if @isdir equ FALSE是的情况下,敏感的字符串比较FALSE或TRUE与FALSE使用整数比较运算符EQU落回,因为无论串的字符串比较FALSE也不串TRUE可以成功地转换为一个整数,参见符号等同于NEQ,LSS,GTR等在Windows批处理文件有关详细信息。
对于不区分大小写的字符串比较,请在命令行中使用:
if /I @isdir == FALSE
Run Code Online (Sandbox Code Playgroud)
并且if @isdir==FALSE优于if @isdir equ FALSE,但行为相同。
最好使用,if @isdir == FALSE因为这是100%正确的语法。
用于对相等性进行字符串比较的IF命令语法:
IF FirstStringToCompare == SecondStringToCompare Command
Run Code Online (Sandbox Code Playgroud)
或包含空格的字符串或 &()[]{}<>|^=;!'+,`~
IF "first string to compare" == "second string to compare" "command to execute"
Run Code Online (Sandbox Code Playgroud)
该命令是IF与第一个参数字符串分开的,并带有空格字符(在这种情况下为字符串FALSE或字符串)TRUE。要比较的第一个字符串与第二个参数分隔,中间带有一个空格,该空格为等于运算符==。再多一个空格后,将指定第三个参数,它是要比较的第二个字符串。与第三个参数再次用空格隔开的最后一个命令是要在字符串相等时执行的命令。
==尽管实际上需要将运算符中的第一个与第二个以及第二个与第三个参数分开,但通常会省略运算符周围的空格。但是Windows命令解释器会识别运算符周围的缺失空间==并自动添加它们,因为仅在两行写入批处理文件时就可以看到
if FALSE==FALSE echo It is FALSE.
if TRUE == FALSE echo It is FALSE.
Run Code Online (Sandbox Code Playgroud)
并在命令提示符窗口中运行此批处理文件,结果是:
if FALSE == FALSE echo It is FALSE.
It is FALSE.
if TRUE == FALSE echo It is FALSE.
Run Code Online (Sandbox Code Playgroud)
Windows命令解释器进行预处理后实际执行的命令行在每个参数之间留有一个空格。
在命令提示符窗口中运行时,命令IF输出的帮助if /?将字符串比较语法显示为:
如果[NOT] string1 == string2命令
因此可以认为,==只要要比较的字符串本身不包含等号,就不需要真正的左右空间,在这种情况下,有必要将两个字符串都用双引号引起来。
| 归档时间: |
|
| 查看次数: |
705 次 |
| 最近记录: |