【发布时间】:2011-06-25 18:09:06
【问题描述】:
例如,我可以使用以下通配符删除所有 .exe 文件:
del *.exe
我该如何做相反的事情,即删除所有不以.exe结尾的文件?
【问题讨论】:
标签: batch-file wildcard
例如,我可以使用以下通配符删除所有 .exe 文件:
del *.exe
我该如何做相反的事情,即删除所有不以.exe结尾的文件?
【问题讨论】:
标签: batch-file wildcard
没有直接的方法,这是一种无脚本的方法:
*.exe*文件复制到子目录中。*.*)。这是代码:
C:\mydir> mkdir temp
C:\mydir> move *.exe temp
C:\mydir> del *.* /f /q
C:\mydir> move temp\*.exe .
C:\mydir> rmdir temp
【讨论】:
del *.* /f /s,您也会删除 temp 中的文件(由于 /s 参数)
不知道这是否适合您(取决于您的目录中是否有其他只读文件),但这应该可以:
attrib +R *.exe
del *.*
attrib -R *.exe
关于您的问题,DOS 默认命令中没有“排除”通配符之类的东西
【讨论】:
你可以试试这个。
FOR /R [directory] %%F IN (*.*) DO IF NOT "%%~xF" == ".[extension]" DEL /F /S "%%F"
或者,如果你只有一个 .exe 文件,那就更简单了。
for %i in (*.*) do if not %i == FILE.EXE del %i
【讨论】:
为了增强问题的响应(关于排除通配符):如果您不搜索特定扩展名,则可以使用此 for 循环:
for /F "usebackq" %i IN (`dir /b *^|findstr /i /v <PATTERN>`) DO @echo %i
将“echo”替换为“del”...
【讨论】: