如何检查“或EQU”窗口中的批处理文件
是新手到Windows批处理文件,并一直在努力与此脚本与几个实验的时间超过8小时..但没有运气...如何检查“或EQU”窗口中的批处理文件
这是我的代码
@echo off
setlocal ENABLEDELAYEDEXPANSION
FOR %%f IN (*.*) DO (
echo %%f
echo %%~xf
IF %%~xf==".xml" |= ".java" (
echo file needed
) ELSE(
echo file not needed
del %%f
)
)
1)我无法获得| =的工作; “此时”获得“意外”。“错误
2)如何使这个工作的所有文件和子目录下这fodler?
3)我也试过如下:
@echo off
setlocal ENABLEDELAYEDEXPANSION
FOR %%f IN (*.*) DO (
set todel=yes
echo %%~xf
echo todel=%todel%
IF %%~xf==".xml" (
todel=no
)
IF %%~xf==".java" (
todel=no
)
echo todel=%todel%
IF %todel%=="yes" (
del %%f
)
)
todel总是空的。猜猜我不能这样设置循环内?
任何帮助表示赞赏。谢谢!
在这段代码中,可能有更好的方法来做你自己有效的工作,但这里有一个基本的结构,可以帮助你更好地理解cmd.exe是如何做到的。
@Echo Off
For %%A In (*.*) Do (
If /I Not "%%~xA"==".xml" (
If /I Not "%%~xA"==".java" (
Echo %%~xA file not needed
Echo Del %%A
) Else (
Echo .java file needed
)
) Else (
Echo .xml file needed
)
)
Timeout -1
变化Echo Del %%A
到Del %%A
第6行,如果你真想让脚本删除的文件,而不是仅仅告诉你delete命令。
这很好。我该如何让这些代码适用于子类? TIA! – user1164061
@ user1164061,通过在命令提示符处键入'FOR /?'来阅读FOR命令的帮助。你应该看到一个可以帮助你的选项。 – Squashman
另一种选择是使用DIR
命令并将其传递给FINDSTR
命令以仅列出需要删除的文件。
FOR /F "DELIMS=" %%G IN (`dir /b /s *.* ^|findstr /E /V ".xml .java"`) DO del "%%G"
如果您阅读“IF”命令的帮助文件,可能会有帮助。在命令提示符下输入'IF /?'。 – Squashman
第二组代码的问题在于你在代码块中,它需要使用延迟扩展。您必须启用延迟扩展,然后使用感叹号而不是百分号来引用变量。 IF命令也可以进行字符串比较。如果你在比较的一边有报价,他们必须在另一边。 – Squashman
嗨Squashman,谢谢你的回复。我无法理解你在说什么。你能不能把你的话放进代码中去显示缺少的东西? – user1164061