转:批命令从FTP服务器GET由当前日期组合成文件名的文件
我有一个项目,需要实现每日定时到FTP取动态文件名的文件,文件名是由当前日期加一些固定字符串组成的。文件存在在SOLARIS服务器下,定时任务由WINDOWSXP的PC机来执行。
1、创建VBS脚本文件,命名为createftp.vbs
'函数功能:将小于10的数字前加个"0", 例:"7" 改为"07"
Function StrConvert(str)
If CInt(str) < 10 Then
StrConvert = "0" & str
else
StrConvert = str
End If
End Function
'待获取文件的路径
DATAPATH ="ftp_server_path"
'获取当天日期
today = Date()
yesterday= DateAdd("d", -1, today)
my_year=year(yesterday)
my_mm=month(yesterday)
my_dd=day(yesterday)
my_month=StrConvert(my_mm)
my_day=StrConvert(my_dd)
'格式化日期
my_time=my_year & my_month & my_day
'获取文件名
filename= my_time & "_sum_start.txt"
'在指定路径生成my_ftp.txt文件,在此可修改相应的路径及文件名
'按实际情况修改以下部分,即修改 my_ftp.txt的内容
Dim fso1, tf
Set fso1 = CreateObject("Scripting.FileSystemObject")
Set tf = fso1.CreateTextFile("localpc_ftp_filename", True)
tf.WriteLine("lcd localpc_path")
tf.WriteLine("open ftp_server_ip ftp_server_port")
tf.WriteLine("ftp_server_username")
tf.WriteLine("ftp_server_password")
tf.WriteLine("cd " &DATAPATH )
tf.WriteLine("get " & filename & " new_filename")
tf.WriteLine("disconnect")
tf.WriteLine("bye")
tf.Close
2、创建BAT批处理文件,命名为input.bat
@echo off
rem #creatftp.vbs 脚本功能:自动生成文件my_ftp.txt
creatftp.vbs
ftp -i -s:localpc_ftp_filename
3、通过批处理获取系统时间的另一方法:
%date:~0,4% 获取年份
%date:~5,2% 获取月份
%date:~8,2% 获取日期
%date:~10,6% 获取星期几
%time:~0,2% 获取小时
%time:~3,2% 获取分钟
在批处理文件中,可以使用set命令写文件名,如上例中:
set ftp_server_filename=%date:~0,4%%date:~5,2%%date:~8,2%_sum_start.txt
不过这里的数值小于10不会自动加0。