APP下载

用计划任务实现土壤水分数据的自动下载

2016-04-14李季涛王丽娟张立朋

地球 2016年4期
关键词:命令行命令提示符数据文件

■李季涛 王丽娟 张立朋

(山东省滨州市惠民县气象局山东滨州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

猜你喜欢

命令行命令提示符数据文件
Windows 10新版CMD更新
让命令提示符窗口与Windows更融洽
数据文件恢复专题问答
数据文件安全管控技术的研究与实现
SQL数据文件恢复工具
Linux系统下GRIB2格式GFS资料转为GRIB1格式的方法详解
Windows命令模式另类用法
快速搞定Windows 8.1 Update更新的失败
Tekla Structure数据文件交互格式分析
低碳生活,从命令行开始