How to download files from FTP site in one command line without user interaction (Windows)

I know there is an FTP command which can be run from command line on Windows, and it downloads a file from an FTP site. User + password are specified in "that" one-line cmd. These options + password passtrough should be on that command line.

echo open 192.168.1.64 21> ftp.txt echo anonymous>> ftp.txt echo [email protected]>> ftp.txt echo bin >> ftp.txt echo get test.txt >> ftp.txt echo bye >> ftp.txt ftp -s:ftp.txt 
12.2k 23 23 gold badges 72 72 silver badges 90 90 bronze badges asked Jan 10, 2013 at 18:01 623 2 2 gold badges 5 5 silver badges 10 10 bronze badges

Do you need to download via FTP or do you just need to download those file with any program? (Rsync can read from a file with names to sync and from the command line. Scp can also do that from the command line. Both are not as ancient as plain-text,no_true_security FTP).

Commented Jan 10, 2013 at 18:16

5 Answers 5

WGET ftp://ftp.mydomain.com/path/file.ext 

for anonymous downloads

or:

WGET ftp://user:[email protected]/path/file.ext 

when authentication is required.

As @XavierStuvw pointed out via edits and comments, swapping WGET to a lowercase wget would work in linux.

wget ftp://user:[email protected]/path/file.ext 
answered Jan 10, 2013 at 18:05 781 4 4 gold badges 9 9 silver badges 28 28 bronze badges i dont see any command wich has user and password switch option in ONE line there. Commented Jan 10, 2013 at 18:26 -s switch was in sentence as i remember Commented Jan 10, 2013 at 18:29

Welcome to Super User! Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference.

Commented Jan 10, 2013 at 18:51

@CalvT No objection. The envisioned benefit of the comment is that Linux-users may land on this page after an internet search and oversee the system it applies to. It happened to me, in fact.

Commented Mar 8, 2017 at 16:59

@CalvT The title is indeed precise, but search engines often visualize the whole answer frame and it's easy to splash into that. Of course this should not discount the reader from being mindful, but in this case it was coincidental that Linux and Windows instructions are basically the same. Well done, thanks.

Commented Mar 8, 2017 at 17:05

I found the way:

echo open 192.168.0.1 >> ftp &echo user admin w00t >> ftp &echo binary >> ftp &echo get file.zip >> ftp &echo bye >> ftp &ftp -n -v -s:ftp &del ftp 
answered Jan 11, 2013 at 10:41 623 2 2 gold badges 5 5 silver badges 10 10 bronze badges

This did not work when I tried it (I ended up using WinSCP's command line client instead). Which version of Windows was it tested on?

Commented May 6, 2016 at 16:50

Could you explain how this line works? Can't find any documentation. I'm trying to make it work with psftp

Commented Nov 10, 2016 at 16:11

@stallingOne Think of the & as a line breaker. it is actually multiple commands. Basically he builds a script, line by line, using echo , and then tell ftp to run it. He's naming the script file ftp too, which makes it confusing.

Commented Jan 28, 2020 at 18:18

Poor choice of file name. "ftp" is both the file name of the script he's building and the name of the exe. So the path resolution at ftp -n -v -s:ftp is a bit hinky. (Each use of "ftp" refer to different things)

Commented Feb 10, 2020 at 22:02

Note that you can ask for the syntax of a command in DOS by using the /? switch. For example:

C:\>ftp /? Transfers files to and from a computer running an FTP server service (sometimes called a daemon). Ftp can be used interactively. FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-x:sendbuffer] [-r:recvbuf fer] [-b:asyncbuffers] [-w:windowsize] [host] -v Suppresses display of remote server responses. -n Suppresses auto-login upon initial connection. -i Turns off interactive prompting during multiple file transfers. -d Enables debugging. -g Disables filename globbing (see GLOB command). -s:filename Specifies a text file containing FTP commands; the commands will automatically run after FTP starts. -a Use any local interface when binding data connection. -A login as anonymous. -x:send sockbuf Overrides the default SO_SNDBUF size of 8192. -r:recv sockbuf Overrides the default SO_RCVBUF size of 8192. -b:async count Overrides the default async count of 3 -w:windowsize Overrides the default transfer buffer size of 65535. host Specifies the host name or IP address of the remote host to connect to. Notes: - mget and mput commands take y/n/q for yes/no/quit. - Use Control-C to abort commands.

In your case, you'll want to use the -s switch to feed it a script, including the login responses.

    Create a script file (c:\scriptfile.txt) with the following contents:

open servername_or_ip username password get /fullpath/thefile.txt c:\fullpath\thefile.txt quit 
C:\>ftp -s:c:\scriptfile.txt