[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样删除D盘文件夹中按时间升序排列的前10个文件夹?

应用场景:车间D盘中电脑主文件夹叫:“张三”,张三文件夹中每天会以当天日期生成一个文件夹,电脑上存储太多了,过一段时间就要“删除张三文件夹中”最早生成日期的文件夹以释放空间,所以每次我都要要升序在删除,现在想用批处理来完成
毕竟没有老师教,自学很痛苦的

回复 1# 朱科技


建议使用任务计划定期执行:批处理删除指定天数日期之前的文件夹
http://bbs.bathome.net/thread-3503-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

测试如下代码,成功后注释掉pause,然后加入定时任务即可
  1. @echo off
  2. rem 保存为ANSI格式
  3. @echo off&setlocal enabledelayedexpansion
  4. set /a n=0
  5. for /f "tokens=*" %%a in ('dir/a-d/od/b') do (
  6. set /a n+=1
  7. if !n! leq 10 del /f "%%~fa"
  8. )
  9. endlocal
  10. pause
复制代码

TOP

回复 3# hfxiang


    想在桌面上运行BAT,然后自动删除D盘中的文件夹
毕竟没有老师教,自学很痛苦的

TOP

本帖最后由 hfxiang 于 2022-9-26 15:07 编辑

回复 4# 朱科技


   
将第5行代码修改为:
  1. for /f "tokens=*" %%a in ('dir "D:\张三" /a-d/od/b/s') do (
复制代码
即可

TOP

回复 5# hfxiang


    回收站也看不到了吧
毕竟没有老师教,自学很痛苦的

TOP

回复 6# 朱科技


   直接删除了,不进回收站的

TOP

回复 6# 朱科技


    提示找不到文件(D盘的路径,怎么删除路径是desktop)
毕竟没有老师教,自学很痛苦的

TOP

本帖最后由 qixiaobin0715 于 2022-9-26 15:32 编辑

我觉最好是保留最新生成的多少个文件夹,以免多次运行代码产生误删:
  1. @echo off
  2. cd /d "D:\张三"
  3. set num=20
  4. for /f "skip=%num% delims=" %%i in ('dir /b /o-d /ad') do rd /q /s "%%i"
复制代码
保留最新生成的前20个文件夹。
注意一定要存在路径“D:\张三”,否则会删除批处理文件所在路径中的除了最新生成的若干文件夹以外的所有文件夹。因为有rd命令,太危险了,切记切记!!!
最好在需要处理的文件夹中运行,上面代码去掉 cd /d "D:\张三"。这样风险要小一些。

TOP

回复 8# 朱科技


   
把你完整的代码帖上来看看

TOP

回复 8# 朱科技
代码中如果有中文字符的话,批处理文件需要另存为ANSI编码。

TOP

回复 9# qixiaobin0715


    路径都设置了D:\张三,不必非要放张三文件夹运行吧,桌面运行没毛病吧
毕竟没有老师教,自学很痛苦的

TOP

回复 9# qixiaobin0715


    @echo off
cd /d "D:\张三"
set num=20
for /f "skip=%num% delims=" %%i in ('dir /b /o-d /ad') do rd /q /s "%%i"

我放在张三文件夹,运行后,没任何反映,
毕竟没有老师教,自学很痛苦的

TOP

回复 5# hfxiang


    以下代码放在桌面 和 放在张三文件夹中 运行,都没反映,CMD窗口显示:找不到文件
@echo off
rem 保存为ANSI格式
@echo off&setlocal enabledelayedexpansion
set /a n=0
for /f "tokens=*" %%a in ('dir "D:\张三" /a-d/od/b/s') do (
        set /a n+=1
        if !n! leq 5 del /f "%%~fa"
)
endlocal
pause
毕竟没有老师教,自学很痛苦的

TOP

本帖最后由 qixiaobin0715 于 2022-9-27 13:51 编辑

回复 12# 朱科技
桌面运行确实是没毛病。主要是如果你把代码误存为UTF-8编码,如果路径中有中文,代码不会识别路径,就会出问题,后面所有的命令都会默认在桌面路径执行,可能会删除桌面符合条件的所有的文件夹。
注意批处理文件用记事本打开,另存为ANSI编码
看你楼上的误删文件可能就是这个原因。
上面代码只是举例:保留最新生成的前20个文件夹而删除其他文件夹,如果文件夹个数不超过20个,当然不会有变化了。保留文件夹的个数请自行修改。

TOP

返回列表