2016-09-07 55 views
0

我使用下面的批處理文件刪除多個驅動器上的不需要的文件。帶目錄變量的批量刪除 - windows 7

set /p DELPATH=<"C:\DELETE-ALL.txt" 

for /f "usebackq delims=;" %%i in ("C:\DELETE-ALL.txt") do @del /q "D:\HFI\%DELPATH%\%%i" > C:\DELETE-ALL-4.txt 2>&1 
... same command for other local and network drives. 

的DELETE,全部.txt看起來是這樣的:

mydirectory 
TEST.xlsx 
TEST2.xlsx 

這個偉大的工程。它刪除單個目錄中的文件。但現在我需要它做更多。我需要批處理文件來刪除不同目錄中的文件。所以,它歸結爲如何即時更改目錄。

任何幫助將不勝感激。

+2

您希望我相信擴展爲'@del/q「D:\ HFI \ D:\ mydirectory \ D:\ mydirectory」'的命令有效嗎? – SomethingDark

+0

謝謝。糾正。 – joehua

+0

你可能想看看[在此](http://stackoverflow.com/questions/38911430/rename-files-using-wildcard-paths/38941888#38941888)。你可以放入目錄/文件名(包括通配符)並用該代碼重命名它們。只需將'ren'改爲'del',它就可以滿足您的需求。這是相當大的,但它對我很好。請注意最後的註釋/排除子文件夾。 – geisterfurz007

回答

0

答案結果比我想象的要容易。雖然我最初的問題是刪除文件,但我已經爲重命名工作。它應該適用於刪除,修改很少。

@(for /f "tokens=1,2 delims=;" %%A in ('"TYPE C:\RENAME-ALL.txt"') do (
@echo "%%A" | find /i "\" 
    @if errorlevel 1 (
    RENAME "%%A" "%%B" >> C:\RENAME-ALL-4.txt 2>&1 
) ELSE (
CD /D D:\mydirectory\%%A 
) 
) 
) 

該腳本查找「\」。如果找到,它會假定該行是一個目錄,並將「D:\ mydirectory \」作爲路徑前綴更改爲相應的目錄。否則,它假定該行包含文件名。由於文件名中不允許反斜槓,因此假設是安全的。

希望這會幫助其他人。

0

我在這裏回答你,因爲我現在不能評論我的低信譽。

我強烈建議使用PowerShell或Python或其他程序腳本來做到這一點。使用Windows批處理會花費更多的時間來找到一個好方法,而且可能無法做到這樣一個複雜的misson。