Get file from FTP server and copy it to UNC directory -
i trying copy csv file ftp server unc file path. had working ftp local path, better project have copy unc path. must achieved in batch , ftp commands.
this code far:
for /f "delims=" %%x in (config.bat) (set "%%x") echo start[%time%] >> "%primefolder%\timerun.log" rem -------------------------------------------------------------------------------------------- rem import .csv ftp server - csv imported local directory rem ftpcmd.txt connects ftp server , copies .csv file local directory rem -------------------------------------------------------------------------------------------- echo open %ftpip%> %primefolder%\ftpcmd.txt echo %ftpusername%>> %primefolder%\ftpcmd.txt echo %ftppassword%>> %primefolder%\ftpcmd.txt echo cd %ftpprimary%>> %primefolder%\ftpcmd.txt echo binary>> %primefolder%\ftpcmd.txt echo lcd /d "%offload%" >> %primefolder%\ftpcmd.txt echo mget %filename%>> %primefolder%\ftpcmd.txt echo disconnect>> %primefolder%\ftpcmd.txt echo quit>> %primefolder%\ftpcmd.txt rem ----------------------------------------------------------------------------------------------------------------------------- rem call , execute ftp command text document (ftpcmd.txt) rem code calls file establishes connection , copies file local directory rem dynamic ftp command file created , populated. rem ----------------------------------------------------------------------------------------------------------------------------- ftp -i -s:"%primefolder%\ftpcmd.txt" >"%primefolder%\logs\ftpinport.log" 2>>"%primefolder%\logs\ftperr.log" echo[%date% - %time%] >> "%primefolder%\logs\ftpinport.log" ftp -i -d -s:%primefolder%\ftpcmd.txt /f "tokens=*" %%a in (%primefolder%\logs\ftperr.log) (echo [%date% - %time%] [error level: 1][issue location:ftp][error:%%a] >> "%primefolder%\logs\error.log") this config file:
primefolder=c:\scripts ftpip=111.11.1.1 ftpusername=user ftppassword=test filename=user.csv ftpprimary=\csv\ ftparchive=\csv\archive offload=\\test.org\test_this\implementation\new projects\new\interface thank ahead of time!
after changing mget get suggested in an answer @martin prikryl, getting error:
r:i/o error
this ftp output:
ftp> open 111.11.1.1 connected 111.11.1.1. 220 welcome code-crafters ability ftp server. user (111.11.1.1:(none)): 331 please send pass now. 230-welcome "user". 230-there 1 of 100 users logged onto server. 230-there 1 users logged onto account. 230-you have unlimited kb of account allocation left. 230-you have 0 transfer credits remaining. 230-you lose 0 credits per kb downloaded. 230-you lose 0 credits per kb uploaded. 230 in directory "/". ftp> cd \csv\ 250 "/csv" current directory. ftp> binary 200 type set 'i' (image). ftp> user.csv \\test.org\test_this\implementation\new projects\new\interface\user.csv 200 port command successful. 150 data connection established, beginning transfer. 226 transfer complete. ftp: 1277532 bytes received in 2.64seconds 483.91kbytes/sec. ftp> disconnect 221 visiting. ftp> quit when redirecting error , output of ftp 1 file output:
ftp> open 111.11.1.1 connected 111.11.1.1 220 welcome code-crafters ability ftp server. user (111.11.1.1:(none)): 331 please send pass now. 230-welcome "user". 230-there 2 of 100 users logged onto server. 230-there 1 users logged onto account. 230-you have unlimited kb of account allocation left. 230-you have 0 transfer credits remaining. 230-you lose 0 credits per kb downloaded. 230-you lose 0 credits per kb uploaded. 230 in directory "/". ftp> cd \csv\ 250 "/csv" current directory. ftp> binary 200 type set 'i' (image). ftp> user.csv \\test.org\test_this\implementation\new projects\new\interface\user.csv 200 port command successful. 150 data connection established, beginning transfer. > r:i/o error 226 transfer complete. ftp: 1277532 bytes received in 2.84seconds 449.20kbytes/sec. ftp> disconnect 221 visiting. ftp> quit
unc path cannot working directory in windows.
so lcd \\example.com\share won't work.
the mget command not allow specify target path.
but not seem need mget, not using wildcard, downloading specific file.
so can use get command instead, allows specify target path.
echo %filename% "%offload%\%filename%" >> %primefolder%\ftpcmd.txt also note %offload% path contains space (new projects) need enclose path double-quotes.
and remove
echo lcd /d "%offload%" >> %primefolder%\ftpcmd.txt side note: there's no /d switch ftp lcd command (there no switches in windows ftp.exe whatsoever).
had need use wildcard, have use different ftp client.
for example winscp scripting can use:
winscp.com /log=winscp.log /command ^ "open ftp://%ftpusername%:%ftppassword%@%ftpip%/" ^ "cd %ftpprimary%" ^ "get %filename% %offload%\" ^ "exit" > "%primefolder%\logs\ftpinport.log" note winscp get command supports wildcards , allows specify target path @ same time. winscp defaults binary transfer mode.
references:
(i'm author of winscp)
Comments
Post a Comment