我想从昨天和今天的variables名称文件从我的FTP下载更新的数据,像这样的结构文件
Daily_(市)_(年月日)的.xlsx
我已经试过这个代码
daily.bat
winscp.exe /console /script=daily.txt
daily.txt
::: Begin set date for /f "tokens=1-4 delims=/-. " %%i in ('date /t') do (call :set_date %%i %%j %%k %%l) goto :end_set_date :set_date if "%1:~0,1%" gtr "9" shift for /f "skip=1 tokens=2-4 delims=(-)" %%m in ('echo,^|date') do (set %%m=%1&set %%n=%2&set %%o=%3) goto :eof :end_set_date ::: End set date set /a today=%dd% set /a yesterday=%dd%-1 @echo off open Reg_8@192.168.8.1 get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%yy%%mm%%today%.xlsx" "D:\FTP\Makassar\2016\daily" get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%yy%%mm%%yesterday%.xlsx" "D:\FTP\Makassar\2016\daily" pause
如果我运行这个脚本不会发生…
您将Windows和WinSCP命令组合在一个文件中。 这是不可能的。 首先阅读指南以自动从FTP服务器或SFTP服务器进行文件传输 。
而且你的脚本太复杂了,因为你没有使用WinSCP %TIMESTAMP%
语法 。
一个简单的方法( daily.txt
):
open ftp://user:mypassword@ftp.example.com/ get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%TIMESTAMP#yyyymmdd%.xlsx" "D:\FTP\Makassar\2016\daily" get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%TIMESTAMP-1D#yyyymmdd%.xlsx" "D:\FTP\Makassar\2016\daily"
(只有这个,放弃你的daily.txt
所有其他代码)
%TIMESTAMP#yyyymmdd%
将解析为20161006
。
%TIMESTAMP-1D#yyyymmdd%
将解析为20161005
(截至2016-10-06)。
你需要WinSCP 5.9和更新的这个。
另外一般情况下,您应该从批处理文件调用winscp.com
,而不是winscp.exe /console
。