在大多數現代系統中,系統會自動創建一個是不必要的額外文件。如何創建一個.bat文件,該文件利用清單刪除不在其上的任何文件?批處理文件刪除選定的文件
這將是對我所創建的自定義文件中刪除自動生成的備份文件,情節日誌,錯誤日誌等有用。
在大多數現代系統中,系統會自動創建一個是不必要的額外文件。如何創建一個.bat文件,該文件利用清單刪除不在其上的任何文件?批處理文件刪除選定的文件
這將是對我所創建的自定義文件中刪除自動生成的備份文件,情節日誌,錯誤日誌等有用。
建立一個叫做「deletestuff.bat」文件(或任何你希望它被調用,只要它是一個.bat
)。
rm *.tmp
rm *.blah
凡.tmp
,並.blah
是你想刪除的文件的擴展名(他們可能是.log
,例如):接下來,填充它。首先通過將文件樣本複製到新文件夾並在那裏運行新的.bat
進行測試,以確保它不會刪除重要的東西。
是啊,這是一個選項,但我想要更多的rverse保持在名單上的東西刪除所有心不是,那會保持更整潔 – Meldrum 2011-04-22 05:36:21
嗯......依靠文件擴展名是不好用批處理腳本,因爲如果8.3文件名是仍處於活動狀態, 'del * .txt'可能會刪除所有'.txtwhatever'文件。嘗試'del * .doc',它也會刪除所有的docx,docm,docz文件。 – Benoit 2011-05-06 13:46:15
注意:'rm'不能用於開箱。使用'del'或'erase'。然而,在這一點上,Benoits的抱怨是無關緊要的,因爲「rm」不是內置的shell,因此不受同樣的限制。 – Joey 2011-05-06 14:32:41
試試這個,確保SEARCHDIR設置爲真實目錄,與你想保留,每行1個文件,使用完整路徑,包括目錄中的文件填充keep.txt。如果你不想使用dir,調整DIR /S /B
命令,使其輸出相同的格式,什麼是你keep.txt
@echo off
setlocal enabledelayedexpansion
set KEEPFILES=keep.txt
set SEARCHDIR=.\test_folder
SET /a KEEPTHISFILE=2
FOR /f "tokens=*" %%A IN ('DIR /S /B %SEARCHDIR%\*') DO (
SET /a KEEPTHISFILE=0
for /f "tokens=1,* delims=¶" %%B in ('"type %KEEPFILES%"') do (
if "%%A"=="%%B" SET /a KEEPTHISFILE=1
)
if "!KEEPTHISFILE!"=="0" (
echo "deleting %%A"
del /f %%A
)
)
一個問題:這會在通配符中使用通配符嗎?如in,* .txt等。 – OrangeAlmondSoap 2011-04-23 12:11:23
不,這只是確切的文件匹配 – aflat 2011-04-23 15:49:47
你是什麼意思一個「清單」? – OrangeAlmondSoap 2011-04-21 14:45:27