Board logo

标题: [”急“]如何在批处理中判断系统当前日期等于某个日期? [打印本页]

作者: ztb888     时间: 2004-5-17 00:00    标题: [”急“]如何在批处理中判断系统当前日期等于某个日期?

那位兄台知道,在批处理文件中判断当前计算机的系统日期是否等于某个日期字符串,如果等于,则运行某个文件或命令?静候佳音!我不希望用外来的工具![em01][em01]






[此贴子已经被作者于2004-5-17 下午 02:29:54编辑过]



作者: zhri     时间: 2004-5-17 00:00
办法是有的,但是......

还算可以。

具体的编写,我现在写不出了。

但是思路是这个。

不可能使用time和date命令,因为他们要求你输入新的来替换
我们可以建立一个目录(比如md aa),然后判断这个目录的建立日期是什么。

我想应该要用到这些个命令。

md
dir
more
find
>
|
if errorlevel=.......

.......

真不好意思......我忘了。
作者: ztb888     时间: 2004-5-18 00:00
老大,麻繁你记起来好吗?
作者: zhri     时间: 2004-5-18 00:00
我实在想不起来了,老兄。

我只能告诉你思路。

首先,即时地建立一个目录(因为建立文件比建立目录麻烦),这时,DIR,就可以看到目录的建立日期。

然后,用if .....(判断字符串是否相等。。。。。。if有三种用法......其中的一种......)

然后用more,find,和dir,同时,用|(管道),》(重定向)把这三条命令写成一条,

主要是判断你刚才建立的这个目录的时期(用dir显示在屏幕上的),是不是和你if后面的字符串相等。。。。。。

。。。。。。

如果你能弄到本DOS手册就好办了。
作者: zhri     时间: 2004-5-18 00:00
http://dos.e-stone.cn/dosbbs/dispbbs.asp?boardID=12&ID=1292

也许能有点帮助。

实在想不起来了。
作者: Kinglion     时间: 2004-5-21 00:00
不希望用外来的工具,就自己编写一个小程序,此问题用BASIC语言很容易实现的.
作者: Kinglion     时间: 2004-5-21 00:00
具体的例程见BASIC程序提供的程序例子. MS-BASIC 7.1 版, QUICK BASIC 4.5 版都有相应的例子程序.
作者: willsort     时间: 2004-5-21 00:00
Re ztb888:

  此问题并不是很难,而且有相当多的解决方案,它们基于不同系统和不同需求,复杂度和技巧性也各有不同,真要详叙,可以上万字的篇幅。本站就有很多关于日期和时间的帖子,可以使用搜索功能大概浏览一下,了解各种方案,然后确定你的需求,将它告诉我们才能有的放矢的解决问题。

作者: roy     时间: 2004-5-21 00:00
我出一個範例好了:

remind.bat
-----------------
@echo off
ver|date|find "05-21">%TEMP%\$$$temp1
copy %TEMP%\$$$temp1 %TEMP%\$$$temp2>NUL
if exist %TEMP%\$$$temp2 goto remind
goto end

:remind
echo --------------------------------
echo Today is important day!
echo --------------------------------

:end
del %TEMP%\$$$temp1
del %TEMP%\$$$temp2

作者: SagInvoker     时间: 2004-5-22 00:00
我觉得斑竹说的方法很好,不过再简单点就好了,而且按照斑竹的意思,好象空文件难道就不能拷了吗?
MD $$$###
DIR $$$###|FIND "05-22">NUL
IF NOT ERRORLEVEL 1 GOTO TRY
::Today isn''t what you want
GOTO END
:TRY
::Today is the real day,Now you can do what you want to do
:END



[此贴子已经被作者于2004-5-22 上午 12:50:33编辑过]



作者: roy     时间: 2004-5-22 00:00
空文件就不能拷的呢
作者: willsort     时间: 2004-5-23 00:00
Re Roy:

  你所用的方法,似乎是在DOS低版本的FIND不产生ERRORLEVEL的时候研究出来的吧。现在用不着这样了,因为大多数人用的都是高版本,而且"空文件不拷贝"应该算是DOS未规范的细节,不知道那个版本就会被取消的。

  而且在本地化的或者未解决Y2K问题的DOS系统中,此程序存在着潜在的问题。比如,我想测知是否5月4日时,使用 ver|date|find "05-04">%TEMP%\$$$temp1 可能会
混淆 05年4月,04年5月以及4月5日等各种状态。
作者: yadngah1984     时间: 2010-9-10 13:11
@echo off
setlocal enabledelayedexpansion
set mm=%date:~5,2%
set dd=%date:~8,2%
if %mm% lss 10 set mm=%date:~6,1%
set /a od=!mm!-1
if !od! lss 10 set rq=0!od!
set cw=%date:~0,4%.!rq!
set /p a=请输入要查询片区名称(片区开头字母就行):
net use z: /delete
net use z: \\10.10.103.7\上传 wang /user:administrator
dir z:\月报\%cw% |find "%a%"
if %errorlevel%==0 goto abc
goto end
:abc
mshta vbscript:CreateObject("Wscript.Shell").popup("您所查询片区月报已交!",7,"系统提示!",64)(window.close)
exit
:end
mshta vbscript:CreateObject("Wscript.Shell").popup("您所查询片区月报未交,请督促完成!",7,"系统提示!",64)(window.close)
exit

我个人写的,希望有所帮助