2016-10-06 8 views
2

나는이 코드를 시도어제 FTP에서 최신 데이터를 다운로드하는 방법은 무엇입니까?

을 .xlsx '에 변수 어제와 오늘,이

Daily_ (도시)와 같은 구조 파일 _ (YYYYMMDD)로 이름을 파일에 의해 내 FTP에서 최신 데이터를 다운로드하려면

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 [email protected] 
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 

나는이 스크립트는 발생하지 실행하면 ...

답변

3

당신은 Windows와 WinSCP에 결합되어 하나의 파일에 명령한다. 그건 불가능하다. guide to automating file transfers from FTP server or SFTP server을 읽는 것으로 시작하십시오.

WinSCP %TIMESTAMP% syntax을 사용하지 않았기 때문에 스크립트가 너무 복잡합니다.


하는 간단한 방법 (daily.txt) :

open ftp://user:[email protected]/ 
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를 호출해야합니다.