Upload single file involves so little commands that it it enough to provide them on command line, saving writing a script file:
winscp.com user@example.com /command "put examplefile.txt /home/user/" "exit"
You can use any available scripting language you have on the local host to generate appropriate WinSCP script. Following example uses PHP language:
get /home/user/examplefile.txt *.<?=date("YmdHis")?>.txt exit
When executed, the generated WinSCP script file may look like:
get /home/user/examplefile.txt *.20060605090825.txt exit
Now pass the generated script file as input to WinSCP:
php -q download.php | winscp.com user@example.com /script="%temp%\download.tmp"
If you do not have a scripting language on the local host, you can use remote-side script (like shell script). This approach requires opening separate shell session to invoke remote-side scripting.
# Make copy of the remote file to temporary timestamped file. # Also add unique extension to easily find the file in the temporary directory. call cp /home/user/examplefile.txt /tmp/examplefile.`date +%Y%m%d%H%M%S`.unique # Download all the files with the unique extension. # There should be only one, the one just created. # While downloading, remove the unique extension. get /tmp/*.unique *. # Remove the temporary file. rm /tmp/*.unique exit
The script below requires opening separate shell session to invoke remote-side scripting.
# Make copy of the most recent file using remote command to new name # with unique extension to easily find the file in the temporary directory. call cp `ls -t | head -1` /tmp/`ls -t | head -1`.latest # Download all the files with the unique extension. # There should be only one, the one just created. # While downloading, remove the unique extension. get /tmp/*.latest *. # Remove the temporary file. rm /tmp/*.latest exit
WinSCP does not support move command for local files. Instead you can combine WinSCP script with batch file:
# Make the script abort on any error option batch abort # Connect open session # Upload the files put *.*
Launch the above script from batch file like the one below:
winscp.com /script=example.txt if errorlevel 1 goto error echo Upload succeeded, moving local files move *.* c:\backup\ exit :error echo Upload failed, keeping local files