2011-02-11 77 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 

取代「回聲」與「德爾」...