用计划任务实现土壤水分数据的自动下载
2016-04-14李季涛王丽娟张立朋
■李季涛 王丽娟 张立朋
(山东省滨州市惠民县气象局山东滨州251700)
用计划任务实现土壤水分数据的自动下载
■李季涛 王丽娟 张立朋
(山东省滨州市惠民县气象局山东滨州251700)
CMD命令提示符和计划任务都是Windows自带的功能,充分利用其强大的功能可以帮助我们完成日常工作。本文详细阐述了利用CMD提示符进行数据下载和归类,并配合计划任务实现自动运行的步骤。
土壤水分数据文件 FTP下载 计划任务
1 名词解释
CMD命令行:命令提示符即cmd.exe,是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序,类似于微软的DOS操作系统。它也可以执行BAT文件。
计划任务:Windows自带功能之一,可以将任何脚本、程序或文档安排在某个最方便的时间运行。
2 工作原理
原始数据文件名格式为:Z_AGME_I_D3803_YYYYMMDDHH0000_O_ASM~FTM.txt
其中YYYY、MM、DD、HH分别为年、月、日、时,为世界时;D3803为站号,本地站号为D3803,本文以此为例。
以一天24份数据文件为一组,设置每天某一固定时刻运行计划任务,集中下载过去一组24份数据文件,并进行分类备份。要注意的是,为了按照世界时对数据文件进行分组,需要在北京时7时数据产生之后运行计划任务。
3 具体实现步骤
(1)计算该组数据文件名。根据数据文件命名规则,该组24份数据文件只需要确定当日日期,HH为00、01、02、……23。假设今天的日期是2014年10月10日,那么需要下载的该组数据文件为:Z_AGME_I_D3803_20141009??0000_O_ASM~FTM.txt
相关代码:
set DaysAgo=1
call:DateToDays%date:~0,4%%date:~5,2%%date:~8,2%Pass~Days!读取当日日期
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``!以下代码用来计算昨日日期
: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
运行结果:变量YYYY、MM、DD分别为数据组的年、月、日。
(2)对下载的数据文件进行分组备份。以月份为名称创建文件夹,将下载的数据文件存放到相应的路径下,相关代码:
md D:土壤水分下载计划D3803\%YYYY%年\%MM%月
(3)进行FTP批量下载。CMD命令行需要利用ftp s命令,调用FTP地址、路径等信息,相关代码:
(echo open“FTP地址”!创建temp.txt并将FTP环境下的命令写入
echo“用户名”
echo“密码”
echo prompt
echo cd“远程路径”
echo lcd D:土壤水分下载计划D3803\%YYYY%年\%MM%月
echo mget Z_AGME_I_D3803_%YYYY%%MM%%DD%?? 0000_O_ASM~FTM.txt
echo bye)>D:土壤水分下载计划 emp.txt
ftp~s:D:土壤水分下载计划 emp.txt!在FTP环境下执行temp.txt中的命令
del D:土壤水分下载计划 emp.txt!删除临时文件temp.txt
(4)写数据下载日志:
D:!进入到存放数据文件的文件夹
cd D:土壤水分下载计划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:土壤水分下载计划 !回到上级目录,将完成情况写入“下载日志.txt” (echo[%date%%time%]%YYYY%年%MM%月%DD%日(世界时),D3803成功下载%nD3803%个)>temp.txt type下载日志.txt>>temp.txt move temp.txt下载日志.txt (5)添加计划下载任务。在各个Windows版本中都有计划任务功能,将写好的脚本添加到其中,使其在某一时刻(如北京时每天早上7:20),即可完成自动运行。 [1]Windows7脚本编程和命令行工具指南(美)尼托著,李军等译 P426.6[文献码]B 1000~405X(2016)~4~243~1