我有一个有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. FTP脚本保留后放
- 2. 脚本删除目录,但保留的文件
- 3. Shell脚本.zip压缩文件夹保留文件夹结构(Mac OS X)
- 4. 脚本/命令合并3个文件保留最后的文件名
- 5. 将ajax留言本保存到文件
- 6. AutoCompleteBox不保留文本
- 7. 保留文本框的值
- 8. 在文本框内保留文本
- 9. 脚本异步标记是否保留脚本执行顺序?
- 10. 读取文件,删除文本字段,保留数字文件
- 11. 卸载后保留文件
- 12. File.copyTo保留旧文件名
- 13. Rmarkdown保留.tex文件
- 14. 保留文件名Ghostscript
- 15. 用perl保留原始文件的副本在其他文件
- 16. 创建R脚本文件,保存为R脚本文件并从命令行打开R脚本文件
- 17. 从Enterprise Architect脚本保存文件
- 18. 谷歌脚本保存/更新文件
- 19. 保存Excel文件使用Java脚本
- 20. 如何在保存文件时保留原始文件的副本
- 21. SVN错误 - 保留本地修改或版本的文件,
- 22. SVN删除本地文件,保留在版本库
- 23. 更改文本视图文本时保留文本样式
- 24. 阅读文本文件,并保留意见
- 25. 写入文件时保留现有文本
- 26. 结合保留分隔符和格式的文本文件
- 27. 在文本文件中保留以模式开头的行
- 28. 简化文本,但保留文件类型可见
- 29. 将列表写入文本文件,保留名称,R
- 30. 在android中保留一个文本文件
文件数量不应超过子目录中的数量还是所有文件的数量? – npocmaka 2014-08-29 07:34:58