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

[文件操作] BAT脚本如何批量删除目录下固定格式文件名?

我论坛看到了  Batcher   的一个代码,在方案六中可以实现此功能。但是我的情况还是和他有点小小的不一样。
1.我的目录下还有其它文件
2.我的文件命名是rolling.2012-07-01 09.51.53.1.log  ,他给的例子是bak-2009-12-25.log
所以我把代码修改了一下。
将  set "FileDate=!FileDate:~4,10!"  更改为了 set "FileDate=!FileDate:~8,10!"
我以为这段话的意思是从文件名第五位开始,到第十位结束。所取得的日期数据,但似乎还不是。

是可以删除了一些文件,但是发现一些其它文件也被删除了,不知道为什么请大家帮忙
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\Global.asax"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\Logon.aspx"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.40.53.1.log"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.41.40.1.log"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.42.14.1.log"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.42.52.1.log"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.43.32.1.log"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.44.17.1.log"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.44.52.1.log"


批处理原代码:
  1. @echo off
  2. ::演示:删除指定路径下指定天数之前(以文件名中包含的日期字符串为准)的文件。
  3. ::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
  4. ::本例假设文件名中包含的日期字符串(比如:bak-2009-12-25.log)
  5. rem 指定待删除文件的存放路径
  6. set SrcDir=C:\Test\BatHome
  7. rem 指定天数
  8. set DaysAgo=1
  9. >"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
  10. >>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
  11. >>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
  12. for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
  13.   set "DstDate=%%a"
  14. )
  15. set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
  16. setlocal enabledelayedexpansion
  17. for /r "%SrcDir%" %%a in (*.*) do (
  18.     set "FileDate=%%~na"
  19.     set "FileDate=!FileDate:~4,10!"
  20.     if "!FileDate!" leq "%DstDate%" (
  21.         if exist "%%a" (
  22.             echo del /f /q "%%a"
  23.         )
  24.     )
  25. )
  26. endlocal
  27. pause
复制代码

不是到第十位结束,而是再往后数十位。

TOP

对是往后面再数十位。
那为什么这个脚本还删除了这些文件。
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\Global.asax"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\Logon.aspx"

TOP

20行
*.* --> *.log

TOP

20行
*.* --> *.log
apang 发表于 2012-8-13 10:24



    谢谢,已经成功,就是还有个小问题,有个这样的文件 rolling.log也被包含了,但是问题不大。

TOP

返回列表