28

I would like to FTP the contents of a directory, but I can't seem to find the right way to use a wildcard. It seems like this would be a common thing to do; is my whole approach wrong?

The command is

ftp -s:"C:\Scripts\ftp01" ftpserver.domain.com

The script that is called is below. Updated per billinkc.

username
password
ascii
cd "/destinationfolder"
lcd "C:\Backup"
mput *.bak
close
quit

The script starts, no files are copied and the FTP session remains open.

230 User username Logged in Successfully
ftp> ascii
200 TYPE Command OK A
ftp> cd "/destinationfolder"
250 Directory successfully changed to "/destinationfolder"
ftp> lcd "C:\Backup"
Local directory now C:\Backup.
ftp> mput *.bak
mput 9829980.bak? close
mput 6406766.bak? quit
ftp>
ftp>

Conclusion

I needed to add the flag to suppress the PROMPT command:

ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com

8 Answers 8

38

Before issuing the mput command, issue a prompt command to disable Interactive Mode. Once that's off it shouldn't ask you to confirm each file for the mput (or an mget).

2
  • 5
    For those wondering "what is the syntax of this prompt command", you literally just type "prompt" and it toggles prompting from true to false.
    – Noumenon
    Jan 8, 2017 at 12:24
  • 2
    Another way of disabling interactive prompting is to use the -i flag on the ftp command itself (e.g. ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com). The docs describe the -i option as: "Turns off interactive prompting during multiple file transfers."
    – Jesse Webb
    Aug 11, 2017 at 20:11
3

Try inserting the line prompt n just before the mput line

3

I've never tried using the pathname for local folders, but I have done it by changing the local directory (lcd):

username
password
ascii
cd "/destinationfolder"
lcd Backup
mput *.bak
close
quit
1

Use the mput command to put multiple files.

2
  • 1
    Yes, that's what I am using
    – mmcglynn
    Nov 16, 2011 at 14:58
  • Behind a firewall (particularly SOHO or cheap business grade units)? The built in ftp in Windows doesn't support PASV mode, so the transfer will hang and never complete.
    – Chris S
    Nov 16, 2011 at 15:11
1

If you have administrator rights, you can install ncftpput. It is easy to use and great for recursive FTP uploads. The switch for recursive transfer is -R.

The software is included in most Linux distributions. For Windows it is installable with Cygwin.

1

As Tim Haegele mentioned, ncftp does this very smoothly on Linux, if you are able and willing to install it:

sudo apt-get install ncftp
ncftp -R ftpserver.domain.com . /Scripts/ftp01
1

This is the script that I used and that worked for me.

For ftp1.bat (script):

ftp -i -s:\tmp\ftp.txt

For ftp.txt (script):

Open ip
username
password
prompt
lcd C:\YourFolder\YourFolder
binary
cd /DestinationFolder
prompt
mput *.bak
cd ..
disconnect
quit

Maybe there're parts that aren't necessary but I'm putting it as it worked for me, hope it helps

0

You can try the mirror command of lftp with --include option

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.