我有一個有10個子目錄的目錄。這些文件都包含不同的.bak文件。我試圖創建一個腳本來檢查是否有X個文件存在,如果文件數量超過X,它將刪除最舊的文件。換句話說,我需要20個.bak文件的迭代。當第21個出現時,我想讓批處理文件刪除最早的文件。 這可能嗎? 如果是這樣,我可以創建一個查看所有子目錄的單個腳本嗎? 在此先感謝。文件保留腳本
Q
文件保留腳本
0
A
回答
0
假定您要檢查父目錄中的文件數。也可以爲每個子目錄完成。
@echo off
setlocal
set "max_number_files=20"
set "parrent_dir=c:\whatever_you_need"
set "extension=.bak"
pushd "%parrent_dir%"
set "count=0"
setlocal enableDelayedExpansion
for /f "delims=" %%a in ('dir /s /b /a:-d /o:-d /t:c *%extension%') do (
set /a count=count+1
if 1!count! GTR 1!max_number_files! (
rem --- remove the echo to activate deletion
echo del /q /f "%%~a"
)
)
popd
endlocal
endlocal
1
包括兩個選項。第一個將在每個文件夾下留下%maxFiles%
bak
文件。第二個(Vista或更高版本的操作系統需要爲ROBOCOPY窗口來獲取文件的排序列表)將離開%maxFiles%
總
@echo off
setlocal enableextensions disabledelayedexpansion
set "rootFolder=%cd%"
set "maxFiles=20"
rem Option 1 - Keep %maxFiles% inside each of the subfolders
for /d /r "%rootFolder%" %%z in (*) do for /f "skip=%maxFiles% delims=" %%a in (
'dir /tc /o-d /a-d /b "%%~fz\*.bak" 2^>nul'
) do echo del "%%~fz\%%~nxa"
echo ------------------------------
rem Option 2 - Keep %maxFiles% in total under all the subfolders
for /f "skip=%maxFiles% tokens=2,*" %%a in ('
robocopy "%rootFolder%" "%rootFolder%" *.bak /l /nocopy /is /s /njh /njs /ndl /nc /ns /ts
^| findstr /v /r /e /i /c:"%rootFolder:\=\\%\\[^\\]*"
^| sort /r
') do echo del "%%b"
del
命令只回顯到控制檯。如果輸出是正確的,去掉echo
命令來刪除文件
0
這將檢查d:\base\folder
下的每個文件夾,如果有超過20個*.bak
文件它將刪除最早的所以只有20 * .bak文件依然存在,每個文件夾。
在一些示例文件夾上測試它。
@echo off
for /d /r "d:\base\folder" %%a in (*) do (
pushd "%%a"
for /f "skip=20 delims=" %%b in ('dir /b /a-d /o:-d *.bak ') do del "%%b"
popd
)
相關問題
- 1. 保留文本
- 2. Linux腳本 - 擴展保留
- 3. 產品保留腳本PHP
- 4. FTP腳本保留後放
- 5. Bash腳本:保留一行本地文件與遠程文件同步
- 6. 批處理腳本以查找多個文件,並保留
- 7. 簡單重命名文件保留前綴的腳本
- 8. 腳本刪除目錄,但保留的文件
- 9. 腳本/命令合併3個文件保留最後的文件名
- 10. 需要使用腳本更改文件內容,但保留原始文件名
- 11. Shell腳本.zip壓縮文件夾保留文件夾結構(Mac OS X)
- 12. 保留副本上的文件屬性
- 13. 複製文件並保留副本
- 14. Gulp-rev-all保留舊版本文件
- 15. 將ajax留言本保存到文件
- 16. Liquibase腳本不會保留數據
- 17. 複製shell腳本並保留權限
- 18. EDITTEXT不保留文本
- 19. AutoCompleteBox不保留文本
- 20. 保留文本框的值
- 21. 保留文本框的值
- 22. 在文本框內保留文本
- 23. 替換文本添加文本,但保留文件名
- 24. 腳本異步標記是否保留腳本執行順序?
- 25. 讀取文件,刪除文本字段,保留數字文件
- 26. Powershell刪除文件並保留文本文件
- 27. 在回發事件後保留文本框文本
- 28. logrotate保留舊文件名
- 29. django不保留文件名
- 30. 卸載後保留文件
文件數量不應超過子目錄中的數量還是所有文件的數量? – npocmaka 2014-08-29 07:34:58