标题: [文本处理] [已解决]批处理如何删除文件名中的日期小于/等于/大于指定日期的文件 [打印本页]
作者: 7016427 时间: 2015-5-16 15:10 标题: [已解决]批处理如何删除文件名中的日期小于/等于/大于指定日期的文件
本帖最后由 pcl_test 于 2016-7-16 14:34 编辑
我想删除d:\aa\下,小于20131231的所有文件,文件名格式:成都yyyymmdd.xls。请问老师代码怎么写?
如果文件名是:成都【yyyymmdd】.xls
作者: dizimotong 时间: 2015-5-16 23:03
- @echo off&&setlocal EnableDelayedExpansion
- cd /d d:\aa\
- mkdir tmp
-
- for /f %%i in ('dir /a:-d /b') do (
- set filename=%%i
- set year=!filename:~0,4!
- if "!year!" leq "2013" move %%i tmp/>nul
- )
- cd tmp
- move 20131231.xls ..\>nul
- del /q *
- cd ..
- rmdir tmp
- pause
复制代码
希望这段代码能够帮助你
作者: 7016427 时间: 2015-5-17 09:04 标题: [待完善] 请教老师,bat按指定日期删除文件写法
本帖最后由 7016427 于 2015-5-17 12:28 编辑
[待完善]回复 2# dizimotong
你好!执行时提示,系统找不到文件,实际已删除满足条件的文件了!
作者: 7016427 时间: 2015-5-17 09:06
本帖最后由 7016427 于 2015-5-17 12:53 编辑
[执行截图]回复 3# 7016427
作者: dizimotong 时间: 2015-5-17 13:39
你好,我大概知道怎么回事了,我想你应该没有20131231.xls这个文件导致的。
建议将- move 20131231.xls ..\>nul
复制代码
删掉或者改成- move 20131231.xls ..\>nul 2>&1
复制代码
应该就能解决你说的问题了
作者: 7016427 时间: 2015-5-17 14:26 标题: RE: 【修改】请教老师,bat按指定日期删除文件写法
回复 5# dizimotong
你好!如果我的文件名格式是:成都【yyyy年mm月】.xls,我要删除2013年12月前的所有文件,请问这个代码怎么修改?
作者: 7016427 时间: 2015-5-17 14:29 标题: 【求助】请教老师,bat按指定日期删除文件写法
回复 5# dizimotong
你好!如果我的文件名格式是:成都【yyyy年mm月】.xls,我要删除2013年12月前的所有文件,请问这个代码怎么修改?
作者: dizimotong 时间: 2015-5-17 16:18
- @echo off&&setlocal EnableDelayedExpansion
- cd /d d:\aa\
- mkdir tmp
-
- for /f %%i in ('dir /a:-d /b') do (
- set filename=%%i
- set year=!filename:~0,4!
- if "!year!" leq "2013" move %%i tmp/>nul
- )
- cd tmp
- move 2013年12月* ..\>nul
- del /q *
- cd ..
- rmdir tmp
- pause
复制代码
作者: 7016427 时间: 2015-5-17 16:54 标题: 【急!未解决】请教老师,bat按指定日期删除文件写法
回复 8# dizimotong
我的文件名是:成都【2013年01月】.xls、成都【2013年02月】.xls、成都【2013年03月】.xls、成都【2013年04月】.xls .........
执行代码后未删除!
作者: dizimotong 时间: 2015-5-17 17:19
本帖最后由 dizimotong 于 2015-5-17 17:20 编辑
- @echo off&&setlocal EnableDelayedExpansion
- cd /d d:\aa\
- mkdir tmp
-
- for /f %%i in ('dir /a:-d /b') do (
- set filename=%%i
- set year=!filename:~3,4!
- if "!year!" leq "2013" move %%i tmp/>nul
- )
- cd tmp
- move 成都【2013年12月* ..\>nul
- del /q *
- cd ..
- rmdir tmp
- pause
复制代码
试一下,这个行不行。
作者: 7016427 时间: 2015-5-17 17:42
回复 10# dizimotong
我测试错误!提示:存在一个重名文件,或是找不到文件。
作者: dizimotong 时间: 2015-5-17 18:01
我想先问一下,你想删的文件是否成功删除了。
如果是的话,说明代码没有太大问题。
想要取消提示可以将- move 成都【2013年12月* ..\>nul
复制代码
改为- move 成都【2013年12月* ..\>nul 2>&1
复制代码
作者: 7016427 时间: 2015-5-17 18:12
回复 12# dizimotong
没有成功删除文件!
作者: dizimotong 时间: 2015-5-17 18:26
我这边测试没问题,是不是你的文件的文件名有空格,方便的话上传一个文件给我测试一下。
作者: 7016427 时间: 2015-5-17 19:15
回复 14# dizimotong
请问老师,bat批处理文件对文件名,长度是否有限制?如果文件名为“特殊退票登记簿【2013年10月】.xls”这个时,始终删除不了!
作者: dizimotong 时间: 2015-5-17 19:41
你如果用我之前的批处理删除这种文件名为“特殊退票登记簿【XXXX年XX月】.xls”格式的文件肯定不行的,因为我就是利用文件名的特点去编写的。如果你确定要删除“特殊退票登记簿【XXXX年XX月】.xls”格式的文件的话,试一下下面代码吧:(前提是你的文件名格式最好统一)- @echo off&&setlocal EnableDelayedExpansion
- cd /d d:\aa\
- mkdir tmp
-
- for /f %%i in ('dir /a:-d /b') do (
- set filename=%%i
- set year=!filename:~8,4!
- if "!year!" leq "2013" move %%i tmp/>nul
- )
- cd tmp
- move 特殊退票登记簿【2013年12月* ..\>nul 2>&1
- del /q *
- cd ..
- rmdir tmp
- pause
复制代码
还有一点你的文件目录是否是d:\aa\,如果不是你自救修改一下上面代码复制代码
的目录,ok?
作者: 7016427 时间: 2015-5-17 20:15 标题: 【已解决】请教老师,bat按指定日期删除文件写法
[谢谢!]回复 16# dizimotong
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |