2017-05-24 68 views
1

這一直在殺我尋找一個快速,可能爲循環,代碼(儘可能小),將刪除所有文件(不是文件夾)在指定的目錄和所有子目錄中,不是.apk的任何類型(在本例中)刪除子目錄中的所有文件除了給定的擴展名(在Windows BATCH中)

這是我登陸的,但它什麼都不做。 (順便說一句,我已經有%電流%設置爲特定文件夾中的其他地方我的腳本)

For /R %%f in (%current%\Data\TEMP\*) do (
    if not %%~xf==.apk del /S "%%f" 
) 

在控制檯此命令的作用,正是我想要它。我只需要右鍵點擊直接打開一個新的命令窗口,我想開始清理。但是無論什麼原因,我不能讓它在批處理腳本中工作。

For /r %f in (*) do if not %~xf==.apk del /S "%f" 

任何人都有任何想法,爲什麼第一個for循環失敗了我?

+1

'爲/ R 「當前%%\ DATA \ TEMP」 %% F IN(*)做(如果不是「%%〜xf」==「。apk」del「%%〜f」)' – aschipfl

+0

這就是IT!現在,我不想只拿它跑。我想知道我哪裏錯了,爲什麼。 – Noah

+0

'for/R'命令[需要指定路徑](https://ss64.com/nt/for_r.html)。 – SomethingDark

回答

1

for /R當您在集合(即圓括號之間的部分)中指定的不僅僅是文件名稱模式時,可能會導致意外的結果。所以你需要把路徑部分立即放在/R之後。 (如果沒有指定,則默認爲當前目錄罷了。)所以下面應該工作:

for /R "%current%\Data\TEMP" %%f in (*) do (if not "%%~xf"==".apk" del "%%~f") 
相關問題