
BAT腳本如何批量刪除目錄下固定格式文件名我論壇看到了Batcher 的一個代碼,在方案六中可以實現此功能。但是我的情況還是和他有點小小的不一樣。1.我的目錄下還有其它文件2.我的文件命名是rolling.-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:DevAppRemoteMeterInterface0818Global.asaxdel /f /q D:DevAppRemoteMeterInterface0818Logon.aspxdel /f /q D:DevAppRemoteMeterInterface0818rolling.-08-01 09.40.53.1.logdel /f /q D:DevAppRemoteMeterInterface0818rolling.-08-01 09.41.40.1.logdel /f /q D:DevAppRemoteMeterInterface0818rolling.-08-01 09.42.14.1.logdel /f /q D:DevAppRemoteMeterInterface0818rolling.-08-01 09.42.52.1.logdel /f /q D:DevAppRemoteMeterInterface0818rolling.-08-01 09.43.32.1.logdel /f /q D:DevAppRemoteMeterInterface0818rolling.-08-01 09.44.17.1.logdel /f /q D:DevAppRemoteMeterInterface0818rolling.-08-01 09.44.52.1.log批處理原代碼:
nclick="copycode($('code0'));">復制代碼
- @echo off
- ::演示:刪除指定路徑下指定天數之前(以文件名中包含的日期字符串為準)的文件。
- ::如果演示結果無誤,把del前面的echo去掉,即可實現真正刪除。
- ::本例假設文件名中包含的日期字符串(比如:bak-2009-12-25.log)
- rem 指定待刪除文件的存放路徑
- set SrcDir=C:TestBatHome
- rem 指定天數
- set DaysAgo=1
- >%temp%DstDate.vbs echo LastDate=date()-%DaysAgo%
- >>%temp%DstDate.vbs echo FmtDate=right(year(LastDate),4) ^& right(0 ^& month(LastDate),2) ^& right(0 ^& day(LastDate),2)
- >>%temp%DstDate.vbs echo wscript.echo FmtDate
- for /f %%a in ('cscript /nologo %temp%DstDate.vbs') do (
- set DstDate=%%a
- )
- set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
- setlocal enabledelayedexpansion
- for /r %SrcDir% %%a in (*.*) do (
- set FileDate=%%~na
- set FileDate=!FileDate:~4,10!
- if !FileDate! leq %DstDate% (
- if exist %%a (
- echo del /f /q %%a
- )
- )
- )
- endlocal
- pause

