日期:2014-05-17  浏览次数:20744 次

forever_young兄弟, 再帮忙解决一个问题,呵呵
还是bat得那个问题,昨天的那个修改文件的问题解决了,想问另外一个:


for /f "tokens=*" %%a in ('dir Tiger_API.log.* /b /o:d') do (

set fx=%%~xa

set fid=!fx:~1,3!

if /i !fx! equ .log (set fid=log.1) else (set /a fid=!fid!+1)

ren %%a %%~na.!fid!
)

这个是我现在用的,我用 dir /o:d就可以把最大后数那个放在最前面,所以不用先该名字后替换了

问题1:我想判断Tiger_API.log,如果创建时间为当天,就不做修改操作
  2:我想做循环嵌套

for %%logtype in (Tiger_API.log Tiger_Out.log Tiger_In.log) do (

if((%%logtype ==Tiger_API.log && Tiger_API.log createTime != today)|| (%%logtype ==Tiger_Out.log && Tiger_Out.log createTime != today) || (%%logtype ==Tiger_In.log && Tiger_In.logcreateTime != today) )(

for /f "tokens=*" %%a in ('dir Tiger_API.log.* /b /o:d') do (
  change file name
)
)
)

能实现么?可以的话再给你加50分表示感谢,呵呵





------解决方案--------------------
我总觉得靠dir的参数来过滤有点玄,文件少还无所谓,文件多了操作频繁了难保不出点差错,呵呵。

第二个问题是可以实现的,我现在有点事,待会得空了,给你写了贴上来。

你的意思是如果Tiger_API.log是当天创建的,就不进行昨天你提出的那个操作,如果不是当天创建的就进行昨天的那个操作?

如果要是我理解的对的,你没必要用嵌套,这样看起来也乱,可以直接在批处理的前面做个判断,如果为true则退出,如果为false则进行下面的操作,这样看起来明了。



------解决方案--------------------
这个问题很简单,不过需要你运行这个命令,把结果贴出来看看。否则别人写的代码很可能在你电脑上失败,甚至造成灾难性的后果。

BatchFile code
echo %date%