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

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

本帖最后由 pcl_test 于 2016-7-16 14:34 编辑

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

评分人数

    • pcl_test: 不要每次回帖都加标题PB -30

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

[谢谢!]回复 16# dizimotong

TOP

你如果用我之前的批处理删除这种文件名为“特殊退票登记簿【XXXX年XX月】.xls”格式的文件肯定不行的,因为我就是利用文件名的特点去编写的。如果你确定要删除“特殊退票登记簿【XXXX年XX月】.xls”格式的文件的话,试一下下面代码吧:(前提是你的文件名格式最好统一)
  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:~8,4!
  7. if "!year!" leq "2013" move %%i tmp/>nul
  8. )
  9. cd tmp
  10. move 特殊退票登记簿【2013年12月* ..\>nul 2>&1
  11. del /q *
  12. cd ..
  13. rmdir tmp
  14. pause
复制代码
还有一点你的文件目录是否是d:\aa\,如果不是你自救修改一下上面代码
  1. cd /d d:\aa\
复制代码
的目录,ok?

TOP

回复 14# dizimotong
请问老师,bat批处理文件对文件名,长度是否有限制?如果文件名为“特殊退票登记簿【2013年10月】.xls”这个时,始终删除不了!

TOP

我这边测试没问题,是不是你的文件的文件名有空格,方便的话上传一个文件给我测试一下。

TOP

回复 12# dizimotong
没有成功删除文件!

TOP

我想先问一下,你想删的文件是否成功删除了。
如果是的话,说明代码没有太大问题。
想要取消提示可以将
  1. move 成都【2013年12月* ..\>nul
复制代码
改为
  1. move 成都【2013年12月* ..\>nul 2>&1
复制代码

TOP

回复 10# dizimotong
我测试错误!提示:存在一个重名文件,或是找不到文件。

TOP

本帖最后由 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

评分人数

TOP

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

回复 8# dizimotong
我的文件名是:成都【2013年01月】.xls、成都【2013年02月】.xls、成都【2013年03月】.xls、成都【2013年04月】.xls .........
执行代码后未删除!

TOP

  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
复制代码

TOP

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

回复 5# dizimotong

你好!如果我的文件名格式是:成都【yyyy年mm月】.xls,我要删除2013年12月前的所有文件,请问这个代码怎么修改?

TOP

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

回复 5# dizimotong
你好!如果我的文件名格式是:成都【yyyy年mm月】.xls,我要删除2013年12月前的所有文件,请问这个代码怎么修改?

TOP

你好,我大概知道怎么回事了,我想你应该没有20131231.xls这个文件导致的。
建议将
  1. move 20131231.xls ..\>nul
复制代码
删掉或者改成
  1. move 20131231.xls ..\>nul 2>&1
复制代码
应该就能解决你说的问题了

TOP

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

[执行截图]回复 3# 7016427

TOP

返回列表