例如,我可以使用以下通配符删除所有.exe
个文件:
del *.exe
我该怎么做相反的事情,即删除不在.exe
中结束的所有文件?
答案 0 :(得分:10)
你可以试试这个。
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
答案 1 :(得分:3)
没有直接的方法,这是一种无脚本的方式:
*.exe*
文件复制到子目录。*.*
)。这是代码:
C:\mydir> mkdir temp
C:\mydir> move *.exe temp
C:\mydir> del *.* /f /q
C:\mydir> move temp\*.exe .
C:\mydir> rmdir temp
答案 2 :(得分:2)
不知道这是否适合您(取决于您的目录中是否有其他只读文件)但这应该有效:
attrib +R *.exe
del *.*
attrib -R *.exe
关于你的问题,在DOS默认命令中没有“排除”通配符
答案 3 :(得分:0)
要增强问题的响应(关于排除通配符):如果不搜索特定的扩展名,可以使用此for循环:
for /F "usebackq" %i IN (`dir /b *^|findstr /i /v <PATTERN>`) DO @echo %i
替换&#34; echo&#34;用&#34; del&#34; ...