■李季濤 王麗娟 張立朋
(山東省濱州市惠民縣氣象局山東濱州251700)
用計(jì)劃任務(wù)實(shí)現(xiàn)土壤水分?jǐn)?shù)據(jù)的自動下載
■李季濤 王麗娟 張立朋
(山東省濱州市惠民縣氣象局山東濱州251700)
CMD命令提示符和計(jì)劃任務(wù)都是Windows自帶的功能,充分利用其強(qiáng)大的功能可以幫助我們完成日常工作。本文詳細(xì)闡述了利用CMD提示符進(jìn)行數(shù)據(jù)下載和歸類,并配合計(jì)劃任務(wù)實(shí)現(xiàn)自動運(yùn)行的步驟。
土壤水分?jǐn)?shù)據(jù)文件 FTP下載 計(jì)劃任務(wù)
CMD命令行:命令提示符即cmd.exe,是一個32位的命令行程序,微軟Windows系統(tǒng)基于Windows上的命令解釋程序,類似于微軟的DOS操作系統(tǒng)。它也可以執(zhí)行BAT文件。
計(jì)劃任務(wù):Windows自帶功能之一,可以將任何腳本、程序或文檔安排在某個最方便的時間運(yùn)行。
原始數(shù)據(jù)文件名格式為:Z_AGME_I_D3803_YYYYMMDDHH0000_O_ASM~FTM.txt
其中YYYY、MM、DD、HH分別為年、月、日、時,為世界時;D3803為站號,本地站號為D3803,本文以此為例。
以一天24份數(shù)據(jù)文件為一組,設(shè)置每天某一固定時刻運(yùn)行計(jì)劃任務(wù),集中下載過去一組24份數(shù)據(jù)文件,并進(jìn)行分類備份。要注意的是,為了按照世界時對數(shù)據(jù)文件進(jìn)行分組,需要在北京時7時數(shù)據(jù)產(chǎn)生之后運(yùn)行計(jì)劃任務(wù)。
(1)計(jì)算該組數(shù)據(jù)文件名。根據(jù)數(shù)據(jù)文件命名規(guī)則,該組24份數(shù)據(jù)文件只需要確定當(dāng)日日期,HH為00、01、02、……23。假設(shè)今天的日期是2014年10月10日,那么需要下載的該組數(shù)據(jù)文件為:Z_AGME_I_D3803_20141009??0000_O_ASM~FTM.txt
相關(guān)代碼:
set DaysAgo=1
call:DateToDays%date:~0,4%%date:~5,2%%date:~8,2%Pass~Days!讀取當(dāng)日日期
set/a PassDays~=%DaysAgo%
call:DaysToDate%PassDays%DstYear DstMonth DstDay
set DstDate=%DstYear%~%DstMonth%~%DstDay%
set YYYY=%DstDate:~0,4%
set MM=%DstDate:~5,2%
set DD=%DstDate:~8,2%
goto:eof``!以下代碼用來計(jì)算昨日日期
:DateToDays%yy%%mm%%dd%days
setlocal ENABLEEXTENSIONS
set yy=%1&set mm=%2&set dd=%3
if 1%yy%LSS 200 if 1%yy%LSS 170(set yy=20%yy%)else(set yy=19%yy%)
set/a dd=100%dd%%%100,mm=100%mm%%%100
set/a z=14~mm,z/=12,y=yy+4800~z,m=mm+12*z~3,j=153*m+2
set/a j=j/5+dd+y*365+y/4~y/100+y/400~2472633
endlocal&set%4=%j%&goto:EOF
:DaysToDate%days%yy mm dd
setlocal ENABLEEXTENSIONS
set/a a=%1+2472632,b=4*a+3,b/=146097,c=~b*146097,c/=4, c+=a
set/ad=4*c+3,d/=1461,e=~1461*d,e/=4,e+=c,m=5*e+2,m/=153, dd=153*m+2,dd/=5
set/add=~dd+e+1,mm=~m/10,mm*=12,mm+=m+3, yy=b*100+d~4800+m/10
(if%mm%LSS 10 set mm=0%mm%)&(if%dd%LSS 10 set dd=0% dd%)
endlocal&set%2=%yy%&set%3=%mm%&set%4=%dd%&goto: EOF
運(yùn)行結(jié)果:變量YYYY、MM、DD分別為數(shù)據(jù)組的年、月、日。
(2)對下載的數(shù)據(jù)文件進(jìn)行分組備份。以月份為名稱創(chuàng)建文件夾,將下載的數(shù)據(jù)文件存放到相應(yīng)的路徑下,相關(guān)代碼:
md D:土壤水分下載計(jì)劃D3803\%YYYY%年\%MM%月
(3)進(jìn)行FTP批量下載。CMD命令行需要利用ftp s命令,調(diào)用FTP地址、路徑等信息,相關(guān)代碼:
(echo open“FTP地址”!創(chuàng)建temp.txt并將FTP環(huán)境下的命令寫入
echo“用戶名”
echo“密碼”
echo prompt
echo cd“遠(yuǎn)程路徑”
echo lcd D:土壤水分下載計(jì)劃D3803\%YYYY%年\%MM%月
echo mget Z_AGME_I_D3803_%YYYY%%MM%%DD%?? 0000_O_ASM~FTM.txt
echo bye)>D:土壤水分下載計(jì)劃 emp.txt
ftp~s:D:土壤水分下載計(jì)劃 emp.txt!在FTP環(huán)境下執(zhí)行temp.txt中的命令
del D:土壤水分下載計(jì)劃 emp.txt!刪除臨時文件temp.txt
(4)寫數(shù)據(jù)下載日志:
D:!進(jìn)入到存放數(shù)據(jù)文件的文件夾
cd D:土壤水分下載計(jì)劃D3803\%YYYY%年\%MM%月
dir/b/a~d Z_AGME_I_D3803_%YYYY%%MM%%DD%?? 0000_O_ASM~FTM.txt|find/v/c"">temp.txt
set/p nD3803= del temp.txt cd D:土壤水分下載計(jì)劃 !回到上級目錄,將完成情況寫入“下載日志.txt” (echo[%date%%time%]%YYYY%年%MM%月%DD%日(世界時),D3803成功下載%nD3803%個)>temp.txt type下載日志.txt>>temp.txt move temp.txt下載日志.txt (5)添加計(jì)劃下載任務(wù)。在各個Windows版本中都有計(jì)劃任務(wù)功能,將寫好的腳本添加到其中,使其在某一時刻(如北京時每天早上7:20),即可完成自動運(yùn)行。 [1]Windows7腳本編程和命令行工具指南(美)尼托著,李軍等譯 P426.6[文獻(xiàn)碼]B 1000~405X(2016)~4~243~1