因为一个比较气人的攻击现象,就想给客户写个自动定时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
评论 (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个字符。
由 七生 | 2009年01月23日 傍晚08时56分
发表于 2009年01月23日 20:56
七生,谢谢补充!
不过我按照这样:
echo > %date:~0,4%%date:~5,2%%date:~8,2%
写在bat文件里,执行了之后没有 echo 出来啊。
由 danzhu | 2009年01月23日 晚上11时04分
发表于 2009年01月23日 23:04
或者说,你那个date的参数,应该怎样获得?我之前发愁的就是怎么从 date /T 的结果中取出要获得的信息。
由 danzhu | 2009年01月23日 晚上11时11分
发表于 2009年01月23日 23:11
原文用>,其實是重定向的作用,就是把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文件。
由 七生 | 2009年01月24日 下午03时20分
发表于 2009年01月24日 15:20
啊,这样,明白了,我回头也试试看,好像你这个比较简单。谢谢详解!
由 danzhu | 2009年01月24日 傍晚08时57分
发表于 2009年01月24日 20:57