Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

WinSCP 5.2 I wanted to put multiple files with a file extension .pgp on an sftp site. When I tested my original command line (see below) and it only placed the first *.pgp alphabetical file (D:\a.csv.pgp) on the sftp site. I tried specifying *.PGP and *.pgp without any changes - only one file (D:\a.csv.pgp) would be copied each time. I got it to work for all files only if I specified a put command for each .pgp file. Any ideas on how to put all *.pgp on the sftp site?

Original Command Line - Does Not Work
d:\winscp\winscp /command "option echo off" "option batch on" "option confirm off" "open sftp" "put D:\*.pgp" "close" "exit"

Works
d:\winscp\winscp /command "option echo off" "option batch on" "option confirm off" "open sftp" "put D:\a.csv.pgp" "put D:\b.csv.pgp" "put D:\c.csv.pgp" "put D:\d.csv.pgp" "put D:\e.csv.pgp" "put D:\f.csv.pgp" "put D:\g.csv.pgp" "put D:\h.csv.pgp" "put D:\i.csv.pgp" "close" "exit"

share|improve this question
add comment

2 Answers

You seem to be using SFTP mode rather than SCP mode

Try mput *.pgp (a guess based on FTP commands)

The manual says wildcards should work

put <file> [ [ <file2> ... ] <directory>/[ <newname> ] ]
If only one parameter is specified uploads the file to remote working directory. If more parameters are specified, all except the last one specify set of files to upload. The last parameter specifies target remote directory and optionally operation mask to store file(s) under different name. Destination directory must end with slash. Filename can be replaced with Windows wildcard1) to select multiple files. To upload more files to current working directory use ./ as the last parameter.

put *.html *.png /home/martin/backup/*.bak

You MUST put the target directory as the last item in the quoted command.

d:\winscp\winscp /command "option echo off" "option batch on" "option confirm off" "open sftp" "put D:\*.pgp ""C:\Documents and Settings\newtowinscp\Documents\Backups""" "close" "exit"

share|improve this answer
add comment

If you are running this from a script, you can just create a loop. You would take all of the *.pgp files and iterate through the list. You would actually upload the files individually; I don't believe that SFTP/SCP at the protocol level moves multiple files at once anyway, so I don't think this should affect performance, it would probably make error handling easier as well.

I believe there is a way to do this with the pure native command line, but in my backup scripts (I do the inverse, I pull files down from my SFTP site) I use this program (forfiles) from Microsoft: http://technet.microsoft.com/en-us/library/cc753551(WS.10).aspx . I will let you read through the examples there on how to use it most effectively for your needs. Basically, you will use a wildcard for filename and then run your upload command for each instance.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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