This is an old revision of the document!

Useful Scripts

Advertisement

Downloading file to timestamped-filename

Using local-side scripting

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

Execute the script to generate actual WinSCP script file. The generated script file will look like:

get /home/user/examplefile.txt *.20060605090825.txt
exit

Now pass the generated script file as input to WinSCP1:

php -q download.php | winscp3 user@example.com /console /script="%temp%\download.tmp"

Using remote-side scripting

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.

Advertisement

# 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

Downloading the most recent file

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
  1. WinSCP supports script on standard input since 3.8.2 only. With earlier versions you need to store the script into temporary file first.Back

Last modified: by martin