Board logo

标题: 我的一个批处理文件。为何不对,请指点。 [打印本页]

作者: 骨灰龙     时间: 2004-2-11 00:00    标题: 我的一个批处理文件。为何不对,请指点。

@echo off
if %date% == "2002.1.1" goto del

:del
deltree %temp%\*.*

:end
exit

我想判断当前日期,如果是则删除临时文件。如果不是就退出,但为什么直接就进行删除命令。
作者: xiaojun     时间: 2004-2-12 00:00
if not %date% == "2002.1.1" goto end
作者: allul*     时间: 2004-2-12 00:00
请问楼上的,你这句是加在
if %date% == "2002.1.1" goto del  下面还是把它改成你写的这样?
作者: Kinglion     时间: 2004-2-12 00:00
您的日期书写格式不对,应该是“XXXX-XX-XX 星期X”格式(在XP系统里),另外,%DATE%变量在DRDOS里无效
作者: 骨灰龙     时间: 2004-2-12 00:00
楼上那位。
我照你说的做了,不行,提示“此时不该有星期X”
为何?
作者: xiaojun     时间: 2004-2-14 00:00


  Quote:
以下是引用allul*在2004-2-12 10:30:34的发言:
请问楼上的,你这句是加在
if %date% == "2002.1.1" goto del  下面还是把它改成你写的这样?

只要满足你给出的条件就Goto...
你可以IF NOT %DATE%=="2002.1.1" EXIT 看什么结果...
作者: willsort     时间: 2004-2-16 00:00
Re 骨灰龙:

    你没有指出你所使用的系统和环境,而我对NT系列环境也很陌生,所以无从判定你的日期格式对错与否。只能就以下问题进行答复:

@echo off
if %date% == "2002.1.1" goto del
rem 如xiaojun所说,在这里跳转语句的使用是有问题的。
rem 因为根据你的语句,无论条件是否成立,都会直接执行下面的del模块。
rem 所以才会不论条件直接执行deltree。
rem 而你的%date%=="2002.1.1" 用的似乎也有问题。
rem 除非原date变量的值中包含引号,否则你这种只给后值加引号的做法是错误的。
rem 而应改作"%date%"=="2002.1.1"。
rem 另外,data变量并非在所有环境中都直接由系统提供,如在98中就需要手动获取。

:del
deltree %temp%\*.*

:end
exit


作者: 骨灰龙     时间: 2004-2-16 00:00
感谢各位。
RE:WILLSORT
我使用的是WIN2003SERVER。可能是系统的原因,照各位的提示做了改动,但还是没有成功,老有错误提示。提示“此时不该有星期X==2001.1.1”
作者: willsort     时间: 2004-4-14 00:00
Re 骨灰龙:

    我找到一台win2000的机器做了实验,其日期格式为“星期三 2004-04-14”,根据此格式确定以下程序,运行通过。如果是其他平台,请根据日期格式修改其中内容。关键的纠正在IF语句上,有以下几点:

    1,等号前后的串都需加上引号保护,因为后面的串中有空格;
    2,日期必须严格符合系统的格式,也就是需要加上星期,位置也必须固定;
    3,GOTO DEL 改为否定的情况下GOTO END;
    4,DELTREE 加上 /Y 的不需确认开关

  Quote:
@echo off
if not "%date%" == "星期三 2004-04-14" goto end

:del
deltree /y %temp%\*.*

:end
exit