« 年假 | (回到Blog入口) | 出差呼市的过期拉杂 »

笔记:批处理文件获得时间/日期信息

因为一个比较气人的攻击现象,就想给客户写个自动定时fetch网页的脚本。定时的事就交给计划任务好了,我只管把文件抓下来,加个时间戳。我会的最简单的方式是perl,但用户那里多半没有perl,就改用批处理吧。

在网上东找西找,参考了多处,才搞明白写了出来。记一下,以后肯定会忘了。

for /F "tokens=1" %%u in ('date /t') do set d=%%u
if "%d:~1,1%"==":" set d=0%d%

for /F "tokens=1" %%u in ('time /t') do set t=%%u
set timestr=%t:~0,2%_%t:~3,2%

curl --output document.html http://www.yourhost.com/pathname/filename.ext?id=parm
move /Y document.html "document_%d%_%timestr%.txt"

至于 curl 到底能否取到网页,我就懒得判断了,呵呵。

参考:
Microsoft DOS for command
Windows batch file timestamp in 24 hr format

引用通告

TrackBack URL for this entry:
如果您想引用这篇文章到您的Blog,
请复制下面的链接,并放置到您发表文章的相应界面中。
http://www.debagua.net/cgi-bin/mt/mt-tb.cgi/748.

评论 (5)

七生:

哈 偶也研究過這個date和time命令,也是為了自動在文件名中加入時間戳,你寫的太簡略了~偶轉帖一下偶收集的一段tip:

在dos下,如果输入time
显示为:
当前时间: 12:54:34.42
输入新时间:(回车)

要取得文件名125434,可以用下面的命令
echo >d:\%time:~0,2%%time:~3,2%%time:~6,2%
这样就生成文件名为125434的文件

假设在命令行下键入date
返回形式为:当前日期: 2005-06-02 星期四
输入新日期: (年月日)(回车)

要取得文件名20050602,可以用下面的命令
echo > %date:~0,4%%date:~5,2%%date:~8,2%
这样就生成文件名为20050602的文件
~表示从环境变量的内容的左边开始,~m,n m表示从第m个字符开始,n表示取n个字符。

danzhu:

七生,谢谢补充!
不过我按照这样:
echo > %date:~0,4%%date:~5,2%%date:~8,2%
写在bat文件里,执行了之后没有 echo 出来啊。

danzhu:

或者说,你那个date的参数,应该怎样获得?我之前发愁的就是怎么从 date /T 的结果中取出要获得的信息。

七生:

原文用>,其實是重定向的作用,就是把echo的輸出,重定向并生成以日期為文件名的文件。執行命令時所在的當前目錄下可以找到這個文件。

去掉>,打“echo %date:~0,4%%date:~5,2%%date:~8,2%”,就是直接在CMD上回顯格式化后去掉橫杠的日期值了。

echo命令只是為了來測試顯示后面日期參數才會用到。直接在CMD里輸入“%date:~0,4%%date:~5,2%%date:~8,2%”也能得到日期值,是以系統找不到命令的提示出現。

簡單說來,在批處理中輸入生成文件的命令時,把文件名用%date%或%time%相關的帶參數變量代替,CMD就自動會用時間戳去命名文件。

幾個常用日期時間變量:
echo %date%
2009-01-24
echo %time%”
14:51:32:24
echo %date:~0,4%%date:~5,2%%date:~8,2%
20090124
echo %date:~2,2%%date:~5,2%%date:~8,2%
090124
echo %time:~0,2%%time:~3,2%%time:~6,2%
145132

給你個例子,假設偶每天要從金融界網站上抓取當日的行情直播網頁,其鏈接中“gszb”后跟隨著日期值,每天都變化,直接輸入就很麻煩,偶寫了個批處理自動抓取,并把文件以日期時間來命名。:
wget http://stock.jrj.com.cn/focus/gszb%date:~2,2%%date:~5,2%%date:~8,2%/index.shtml -O GSZB-%date:~0,4%%date:~5,2%%date:~8,2%-%time:~0,2%%time:~3,2%%time:~6,2%.HTML
實際顯示:
wget http://stock.jrj.com.cn/focus/gszb090124/index.shtml -O GSZB-20090124-145132.HTML
最終在當前目錄下生成GSZB-20090124-145132.HTML文件。

danzhu:

啊,这样,明白了,我回头也试试看,好像你这个比较简单。谢谢详解!

发表一个评论

关于

此页面包含了发表于2009年01月23日 傍晚07时04分的 Blog 上的单篇日记。

此 Blog 的前一篇日记是 年假

此 Blog 的后一篇日记是 出差呼市的过期拉杂

更多信息可在 主索引 页和 归档 页看到。