我试图在Windows上制作批处理文件,删除当前目录中的所有文件,但不包括4个文件扩展名(log,sdb,sdk,bat).
我在Windows上尝试过Forfiles命令,但这会删除当前文件夹(甚至是bat文件)上的所有内容.我的命令是:
@ECHO OFF
FORFILES /M *.* /C "cmd /c IF NOT @ext=="sdb" (IF NOT @ext=="sbk" (IF NOT @ext=="log" (IF NOT @ext=="bat" DEL @FILE)))" /Q
Run Code Online (Sandbox Code Playgroud)
我怎样才能使它工作?
非常感谢!
dbe*_*ham 10
\IF /I(不区分大小写)选项这应该工作
@echo off
forfiles /c "cmd /c if @isdir equ FALSE if /i not @ext==\"sdb\" if /i not @ext==\"sbk\" if /i not @ext==\"log\" if /i not @ext==\"bat\" del @file"
Run Code Online (Sandbox Code Playgroud)
但是上面的速度非常慢,而且输入肯定很多.
以下更简单,更快捷.
@echo off
for /f "delims=" %%F in ('dir /b /a-d ^| findstr /vile ".sdb .sbk .log .bat"') do del "%%F"
Run Code Online (Sandbox Code Playgroud)
如果ROBOCOPY可以:
@ECHO OFF
MKDIR temporary_pit
ROBOCOPY . temporary_pit /XF *.sdb *.sbk *.log *.bat /MOV >NUL
RMDIR /S /Q temporary_pit
Run Code Online (Sandbox Code Playgroud)
也就是说,您正在创建一个临时子目录,将要删除的文件移动到它(这很快,因为目标目录位于同一驱动器上,只重定位文件名,而不是文件的内容),然后删除子目录.
小智 5
此外,您可以执行以下操作:
@echo off
attrib -r -s *.*
attrib +r +s *.sdb
attrib +r +s *.sbk
attrib +r +s *.log
attrib +r +s *.bat
del *.* /S /Q
attrib -r -s *.sdb
attrib -r -s *.sbk
attrib -r -s *.log
attrib -r -s *.bat
Run Code Online (Sandbox Code Playgroud)
——马里奥