找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 71416|回复: 16

[文本处理] [已解决]批处理如何删除文件名中的日期小于/等于/大于指定日期的文件

[复制链接]
发表于 2015-5-16 15:10:55 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-7-16 14:34 编辑

我想删除d:\aa\下,小于20131231的所有文件,文件名格式:成都yyyymmdd.xls。请问老师代码怎么写?
如果文件名是:成都【yyyymmdd】.xls

评分

参与人数 1PB -30 收起 理由
pcl_test -30 不要每次回帖都加标题

查看全部评分

发表于 2015-5-16 23:03:23 | 显示全部楼层
  1. @echo off&&setlocal EnableDelayedExpansion
  2. cd /d d:\aa\
  3. mkdir tmp

  4. for /f %%i in ('dir /a:-d /b') do (
  5.         set filename=%%i
  6.         set year=!filename:~0,4!
  7.         if "!year!" leq "2013" move %%i tmp/>nul
  8. )
  9. cd tmp
  10. move 20131231.xls ..\>nul
  11. del /q *
  12. cd ..
  13. rmdir tmp
  14. pause
复制代码
希望这段代码能够帮助你
 楼主| 发表于 2015-5-17 09:04:08 | 显示全部楼层

[待完善] 请教老师,bat按指定日期删除文件写法

本帖最后由 7016427 于 2015-5-17 12:28 编辑

[待完善]回复 2# dizimotong
你好!执行时提示,系统找不到文件,实际已删除满足条件的文件了!
 楼主| 发表于 2015-5-17 09:06:40 | 显示全部楼层
本帖最后由 7016427 于 2015-5-17 12:53 编辑

[执行截图]回复 3# 7016427
发表于 2015-5-17 13:39:08 | 显示全部楼层
你好,我大概知道怎么回事了,我想你应该没有20131231.xls这个文件导致的。
建议将
  1. move 20131231.xls ..\>nul
复制代码
删掉或者改成
  1. move 20131231.xls ..\>nul 2>&1
复制代码
应该就能解决你说的问题了
 楼主| 发表于 2015-5-17 14:26:58 | 显示全部楼层

RE: 【修改】请教老师,bat按指定日期删除文件写法

回复 5# dizimotong
你好!如果我的文件名格式是:成都【yyyy年mm月】.xls,我要删除2013年12月前的所有文件,请问这个代码怎么修改?
 楼主| 发表于 2015-5-17 14:29:25 | 显示全部楼层

【求助】请教老师,bat按指定日期删除文件写法

回复 5# dizimotong

你好!如果我的文件名格式是:成都【yyyy年mm月】.xls,我要删除2013年12月前的所有文件,请问这个代码怎么修改?
发表于 2015-5-17 16:18:15 | 显示全部楼层
  1. @echo off&&setlocal EnableDelayedExpansion
  2. cd /d d:\aa\
  3. mkdir tmp

  4. for /f %%i in ('dir /a:-d /b') do (
  5.         set filename=%%i
  6.         set year=!filename:~0,4!
  7.         if "!year!" leq "2013" move %%i tmp/>nul
  8. )
  9. cd tmp
  10. move 2013年12月* ..\>nul
  11. del /q *
  12. cd ..
  13. rmdir tmp
  14. pause
复制代码
 楼主| 发表于 2015-5-17 16:54:02 | 显示全部楼层

【急!未解决】请教老师,bat按指定日期删除文件写法

回复 8# dizimotong
我的文件名是:成都【2013年01月】.xls、成都【2013年02月】.xls、成都【2013年03月】.xls、成都【2013年04月】.xls .........
执行代码后未删除!
发表于 2015-5-17 17:19:00 | 显示全部楼层
本帖最后由 dizimotong 于 2015-5-17 17:20 编辑
  1. @echo off&&setlocal EnableDelayedExpansion
  2. cd /d d:\aa\
  3. mkdir tmp

  4. for /f %%i in ('dir /a:-d /b') do (
  5.         set filename=%%i
  6.         set year=!filename:~3,4!
  7.         if "!year!" leq "2013" move %%i tmp/>nul
  8. )
  9. cd tmp
  10. move 成都【2013年12月* ..\>nul
  11. del /q *
  12. cd ..
  13. rmdir tmp
  14. pause
复制代码
试一下,这个行不行。

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-5-17 17:42:56 | 显示全部楼层
回复 10# dizimotong
我测试错误!提示:存在一个重名文件,或是找不到文件。
发表于 2015-5-17 18:01:18 | 显示全部楼层
我想先问一下,你想删的文件是否成功删除了。
如果是的话,说明代码没有太大问题。
想要取消提示可以将

  1. move 成都【2013年12月* ..\>nul
复制代码
改为
  1. move 成都【2013年12月* ..\>nul 2>&1
复制代码
 楼主| 发表于 2015-5-17 18:12:10 | 显示全部楼层
回复 12# dizimotong
没有成功删除文件!
发表于 2015-5-17 18:26:36 | 显示全部楼层
我这边测试没问题,是不是你的文件的文件名有空格,方便的话上传一个文件给我测试一下。
 楼主| 发表于 2015-5-17 19:15:11 | 显示全部楼层
回复 14# dizimotong
请问老师,bat批处理文件对文件名,长度是否有限制?如果文件名为“特殊退票登记簿【2013年10月】.xls”这个时,始终删除不了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 15:22 , Processed in 0.021587 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表