我需要從同一服務器上的 28 個檔案夾中洗掉特定檔案。例如
C:/檔案夾/DMP/app_x0
C:/檔案夾/DMP/app_x1
C:/檔案夾/DMP/app_x2
DeleteList.txt 有一個檔案名串列(帶路徑)。
C:/檔案夾/DMP/app_x0/ABC1.txt
C:/檔案夾/DMP/app_x0/ABC1.doc
批處理檔案需要有一個回圈來逐個遍歷每個檔案夾并洗掉文本檔案中提到的所有檔案。僅當我在 DeleteList.txt 檔案中的每個檔案名之前指定完整路徑時,以下操作才適用于一個檔案夾。
for /f "delims=" %%f in (DeleteList.txt) do del "%%f"
如何在上面使用,以便相同的代碼可以在批處理檔案中運行 28 次,但每次都替換檔案夾位置路徑。DeleteList.txt 不會改變。
任何示例代碼/建議都會有所幫助。謝謝。
uj5u.com熱心網友回復:
我們需要在字里行間閱讀的這些問題之一。
鑒于我們有完整檔案名的檔案,路徑分隔符不正確,并且需要從 28 個目錄中洗掉檔案(但沒有串列),那么我得出結論,由于顯示的所需子目錄都是子目錄,C:\folder\DMP\因此實際上需要洗掉所有與檔案名匹配的檔案在串列中的完整檔案名的父目錄的所有子目錄中。
所以我的建議是
for /f "delims=" %%b in (DeleteList.txt) do del /s "%%~dpb..\%%~nxb"
當然,您應該在實作之前在一個虛擬樹上對其進行測驗。
del /s在目標目錄和所有子目錄中洗掉。目標子目錄是驅動器和路徑%%b;其父 ( ..); 的名稱和擴展名部分%%b。
我更喜歡使用不可用作元變數修飾符的元變數。
要在子目錄中但不在父目錄中洗掉:
for /f "delims=" %%b in (DeleteList.txt) do FOR /d %%c IN ("%%~dpb..\*") DO del /s "%%c\%%~nxb">nul
這一次,%%c依次設定為所有子目錄名,并del/s應用于每個子目錄。( /s...和子目錄) 可能不是必需的。如果需要,將>nul禁止洗掉報告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/428984.html
