如何删除与通配符不匹配的文件?

时间:2011-02-11 18:35:13

标签: batch-file wildcard

例如,我可以使用以下通配符删除所有.exe个文件:

del *.exe

我该怎么做相反的事情,即删除.exe中结束的所有文件?

4 个答案:

答案 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)

没有直接的方法,这是一种无脚本的方式:

  1. 创建一个子目录。
  2. 将所有 *.exe* 文件复制到子目录。
  3. 删除当前目录中的所有文件(*.*)。
  4. 将子目录中的所有文件复制到当前目录。
  5. 删除子目录中的所有文件。
  6. 删除( rmdir )子目录
  7. 这是代码:

    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; ...