2011-02-11 69 views

回答

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 
3

有没有直接的方法,这里有一个脚本的方式来做到这一点:

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

而这里的代码:

C:\mydir> mkdir temp 
C:\mydir> move *.exe temp 
C:\mydir> del *.* /f /q 
C:\mydir> move temp\*.exe . 
C:\mydir> rmdir temp 
+0

+1,但我已经尝试过。 – nyuszika7h 2011-02-11 19:39:15

+0

如果你按照这个做了`del *。*/f/s`,你也会删除临时文件(由于/ s参数) – Jcl 2011-02-11 20:44:55

+0

是的,它应该是`/ f/q`。 – nyuszika7h 2011-02-11 20:45:39

2

不知道这是否会为你工作(取决于如果您有其他的只读文件您的目录),但是这应该工作:

attrib +R *.exe 
del *.* 
attrib -R *.exe 

关于你的问题,有一个在DOS日为“排除”通配符没有这样的事故障命令

0

为了提高问题的响应(约不含通配符):如果你不搜索特定的扩展,你可以用这个循环:

for /F "usebackq" %i IN (`dir /b *^|findstr /i /v <PATTERN>`) DO @echo %i 

取代“回声”与“德尔”...