我希望昨天和今天使用变量名称文件从我的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
如果我运行此脚本不会发生......
答案 0 :(得分:3)
您将Windows和WinSCP命令合并到一个文件中。这是不可能的。首先阅读guide to automating file transfers from FTP server or SFTP server。
您的脚本太复杂了,因为您没有使用WinSCP %TIMESTAMP%
syntax。
一种简单的方法(=SUMIFS(SalesTable[revenue],
SalesTable[product category],$K7,
SalesTable[year],Q$6,
SalesTable[Country],IF(ISNUMBER(SEARCH($C$1,"all")),"*",$C$1),
SalesTable[Customer Gender],IF(ISNUMBER(SEARCH($C$2,"All")),"*",$C$2),
SalesTable[Age group],IF(ISNUMBER(SEARCH($C$3,"All")),"*",$C$3))
):
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%
(截至2016-10-06)。
你需要WinSCP 5.9及更新版本。
通常,您应该从批处理文件而不是20161005
调用winscp.com
。