iT邦幫忙

0

在下面這個網頁參數上的日期部份 要 以現有日期倒推後 帶入 (能在DOS下執行)

在DOS 中 用DATE可得到今天日期
要帶入的變數有兩種: 以今天為 18-SEP-2009 為例, 要推算出 09-AUG-2009 以及 14-SEP-2009 兩種,依月曆 閏月等也要考量
推算出來後因為在下面日期部份是用%2D取代-所以要自動換成 變數值帶入, 在下址中粗體那段,要用 變數取代.
另外 要產生一個檔名的變數(年後面加上08) 以此例可以為 09-AUG-200908.csv 或 09AUG200908.csv

執行方式 :
cd \program files\libwww
loadtofile http://las.pfeg.noaa.gov/OceanWatch-bin/LASserver.pl?xml=%3C%3Fxml%20version%3D%221%2E0%22%3F%3E%3ClasRequest%20href%3D%22file%3Alas%2Exml%22%3E%3Clink%20match%3D%22%2Flasdata%2Foperations%2Fshade%22/%3E%3Cproperties%3E%3Cferret%3E%3Cformat%3Eshade%3C%2Fformat%3E%3Csize%3E%2E35%3C%2Fsize%3E%3Cuse\_ref\_map%3Efalse%3C%2Fuse\_ref\_map%3E%3Cscript\_prefix%3Enolabelnoaspect%3C%2Fscript\_prefix%3E%3C%2Fferret%3E%3C%2Fproperties%3E%3Cargs%3E%3Clink%20match%3D%22%2Flasdata%2Fdatasets%2FAG%2Fvariables%2Fssta8day%22%2F%3E%3Cregion%3E%3Crange%20type%3D%22x%22%20low%3D%22114%22%20high%3D%22128%22/%3E%3Crange%20type%3D%22y%22%20low%3D%2216%22%20high%3D%2230%22%2F%3E%3Cpoint%20type%3D%22t%22%20v%3D%22**16%2DJUN%2D2009**%2000%3A00%22%2F%3E%3C%2Fregion%3E%3C%2Fargs%3E%3C%2FlasRequest%3E -o 指定輸出檔名
補充: 因為上述執行時有時會 error, retry 多次就ok, 最好加入 errlevel <>0 loop
上他自動retry, 因為可能有fail, 但是輸出檔可能已產生空檔所以最好要 /overwrite,
也許在 指定輸出檔名/o 表overwrite

loadtofile -o 的問題可以這樣解決
loadtofile http://www.google.com -o myfile.html < yes.cmd

另外在同一個目錄下準備一個檔案,叫 yes.cmd
裡面的資料只有
y

這樣以後就不會停在詢問 y/n 那裡了
y1234tw iT邦新手 4 級 ‧ 2009-09-18 17:59:25 檢舉
這段測試成功, 但是要是要取 .gif檔 檔名部份就得 想法代入
y1234tw iT邦新手 4 級 ‧ 2009-09-18 18:11:18 檢舉
另外 要擋上次那種 對方端連不上的FATAL ERROR 問題 可以用
:LOOP
IF ERRLEVEL <> 0
GOTO :LOOP
解決嗎 ??

1 個回答

4
海綿寶寶
iT邦超人 1 級 ‧ 2009-09-22 15:46:21
最佳解答

試試看吧

&lt;pre class="c" name="code">
echo wscript.echo dateadd("d",-4,date) >%tmp%\tmp.vbs
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k

rem 將月份數字轉為文字
if %m%==1 set m=JAN
if %m%==2 set m=FEB
if %m%==3 set m=MAR
if %m%==4 set m=APR
if %m%==5 set m=MAY
if %m%==6 set m=JUN
if %m%==7 set m=JUL
if %m%==8 set m=AUG
if %m%==9 set m=SEP
if %m%==10 set m=OCT
if %m%==11 set m=NOV
if %m%==12 set m=DEC

rem 若日期小於10, 前面補0, 例: 9->09, 7->07
if %d% LSS 10 set d=0%d%

echo %d%/%m%/%y%

cd \program files\libwww

:LOOP
loadtofile http://las.pfeg.noaa.gov/OceanWatch-bin/LASserver.pl?xml=%%3C%%3Fxml%%20version%%3D%%221%%2E0%%22%%3F%%3E%%3ClasRequest%%20href%%3D%%22file%%3Alas%%2Exml%%22%%3E%%3Clink%%20match%%3D%%22%%2Flasdata%%2Foperations%%2Fshade%%22/%%3E%%3Cproperties%%3E%%3Cferret%%3E%%3Cformat%%3Eshade%%3C%%2Fformat%%3E%%3Csize%%3E%%2E35%%3C%%2Fsize%%3E%%3Cuse_ref_map%%3Efalse%%3C%%2Fuse_ref_map%%3E%%3Cscript_prefix%%3Enolabelnoaspect%%3C%%2Fscript_prefix%%3E%%3C%%2Fferret%%3E%%3C%%2Fproperties%%3E%%3Cargs%%3E%%3Clink%%20match%%3D%%22%%2Flasdata%%2Fdatasets%%2FAG%%2Fvariables%%2Fssta8day%%22%%2F%%3E%%3Cregion%%3E%%3Crange%%20type%%3D%%22x%%22%%20low%%3D%%22114%%22%%20high%%3D%%22128%%22/%%3E%%3Crange%%20type%%3D%%22y%%22%%20low%%3D%%2216%%22%%20high%%3D%%2230%%22%%2F%%3E%%3Cpoint%%20type%%3D%%22t%%22%%20v%%3D%%22%d%%%2D%m%%%2D%y%%%2000%%3A00%%22%%2F%%3E%%3C%%2Fregion%%3E%%3C%%2Fargs%%3E%%3C%%2FlasRequest%%3E -o myout\myout.html &lt; yes.cmd
IF ERRORLEVEL 0 GOTO EXIT
REM 如果要重試的話, 下面這列可以延遲一點時間, 以免被伺服器封鎖
ping 127.0.0.1 -n 5
GOTO LOOP
:EXIT
看更多先前的回應...收起先前的回應...

最後的檔名myout.html可以改成
%d%-%m%-%y%.html

y1234tw iT邦新手 4 級 ‧ 2009-09-22 16:48:27 檢舉

剛看到, 你太神了, 感恩囉, 我試一下,我把他加入SCHTASKS 看能否自動執行
忘了問你 那上次要 Download libwww 是從那裡下載的 ?
http://www-lib@w3.org ??

y1234tw iT邦新手 4 級 ‧ 2009-09-22 20:42:11 檢舉

感恩囉, 剛試一下如果最後的檔名myout.html可以改成 %d%-%m%-%y%.html
串起來會有空白字元, 會寫入error; 供參考, 測試自動化中後告

y1234tw iT邦新手 4 級 ‧ 2009-09-22 23:09:18 檢舉

因為執行後我們發現 d 與 m 與 y 之後都有3個空白;
所以參考資料在執行前 希望將空白轉成NUll, 因為Null Hex Code 為0;故用%0代表如下
SET d=%d: =%0%
Set m=%m: =%0%
Set y=%y: =%0%
echo %d%/%m%/%y%
因為執行後我們發現 d 與 m 與 y 之後還是有一個0甩不掉; 請大俠指教囉
整體執行成功但是寫出的是空檔
在上面ECHO中我們發現
變成 180/SEP0/20090 我們希望的結果是 18/SEP/2009
請指導 一下 !! 謝謝

我要發表回答

立即登入回答