Board logo

标题: 求助关于日期抓取的问题 [打印本页]

作者: qdrince     时间: 2008-8-18 18:10    标题: 求助关于日期抓取的问题

编写一个BAT,实现如下功能:将现在系统日期抓取,并将现在的这个日期的10天前的月和日分别存为%%m、%%d。

目录下有很多文件,都是以日期命名,例如0818Z001。我的最终目的是删除0808Z001以前的文件,请问各位大侠,这个如何实现~~

十分感谢~
作者: HAT     时间: 2008-8-18 19:29

@echo off
>"%tmp%\MyDel.vbs" echo dt=date()-10
>>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
>>"%tmp%\MyDel.vbs" echo wscript.echo s
for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set TenDay=%%a
echo 10天前的月:%TenDay:~4,2%
echo 10天前的日:%TenDay:~6,2%

作者: qdrince     时间: 2008-8-18 20:35
谢谢楼上帮忙~~

如果现在目录里有
0818z001.txt,0818z002.txt,0818z003.txt,0818z004.txt,0818z005.txt…………
0817z001.txt,0817z002.txt,0817z003.txt,0817z004.txt,0817z005.txt…………
0816z001.txt,0816z002.txt,0816z003.txt,0816z004.txt,0816z005.txt…………
………………
………………
0808z001.txt,0808z002.txt,0808z003.txt,0808z004.txt,0808z005.txt…………
………………

我要删除10天前的,也就是0808以前的文件,需要怎么编写批处理呢?~
作者: HAT     时间: 2008-8-18 20:55

@echo off
>"%tmp%\MyDel.vbs" echo dt=date()-10
>>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
>>"%tmp%\MyDel.vbs" echo wscript.echo s
for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set TenDay=%%a
set Flag=%TenDay:~4,2%%TenDay:~6,2%
for %%a in ("*.txt") do (
  if "1%%a" lss "1%Flag%" (
    del /q "%%a"
  )
)

作者: qdrince     时间: 2008-8-18 21:02
谢谢楼上的朋友再次热心相助~

我想问一下,最后删除的操作是针对批处理文件所在的目录进行的吗?就是说我想删那个目录的文件就把该bat放在该目录下允许?
作者: HAT     时间: 2008-8-18 21:16
是的。
如果你想批处理放到任何位置都能正确执行的话,可以在第二个for里面使用绝对路径。