Differences
This shows you the differences between the selected revisions of the page.
guide_automation 2020-11-24 | guide_automation 2023-10-27 (current) | ||
Line 25: | Line 25: | ||
<code winscp> | <code winscp> | ||
# Connect to SFTP server using a password | # Connect to SFTP server using a password | ||
- | open sftp://user:password@example.com/ -hostkey="ssh-rsa 2048 xxxxxxxxxxx...=" | + | open sftp://user:password@example.com/ -hostkey="ssh-rsa 2048 xxxxxxxxxxx..." |
# Upload file | # Upload file | ||
put d:\examplefile.txt /home/user/ | put d:\examplefile.txt /home/user/ | ||
Line 35: | Line 35: | ||
Assemble the commands into a script file. You can name the script file as you like. See [[scripting#example|simple example]] and some [[scripts|useful scripts]]. | Assemble the commands into a script file. You can name the script file as you like. See [[scripting#example|simple example]] and some [[scripts|useful scripts]]. | ||
- | Use the ''/script'' [[commandline#scripting|command line]] option to pass the script to the WinSCP [[executables|executable]]. Generally, you should also use ''[[commandline#configuration|/ini=nul]]'' switch to [[scripting#configuration|isolate the script execution from GUI configuration]]. You can embed the complete command line into a Windows batch file (''.bat''), like as follows: | + | Use the ''/script'' [[commandline#scripting|command line]] option to pass the script to the WinSCP [[executables|executable]]. Generally, you should also use [[commandline#configuration|''/ini=nul'' switch]] to [[scripting#configuration|isolate the script execution from GUI configuration]] and [[commandline#logging|''/log='' switch]] to enable [[logging|session logging]]. You can embed the complete command line into a Windows batch file (''.bat''), like as follows: |
<code batch> | <code batch> | ||
@echo off | @echo off | ||
- | winscp.com /ini=nul /script=myscript.txt | + | winscp.com /ini=nul /log=myscript.log /script=myscript.txt |
</code> | </code> | ||
Line 52: | Line 52: | ||
* [[ui_file_panel#selecting_files|Select the files]] you want to transfer. | * [[ui_file_panel#selecting_files|Select the files]] you want to transfer. | ||
* Use one of the file transfer commands: //Upload//, //Download//, //Upload and Delete//, //Download and Delete//. | * Use one of the file transfer commands: //Upload//, //Download//, //Upload and Delete//, //Download and Delete//. | ||
- | * On the [[ui_copy|transfer confirmation dialog]], setup transfer options (if you need any non·default settings). | + | * On the [[ui_copy|transfer confirmation dialog]], setup transfer options (if you need any non-default settings). |
* Use the //[[ui_copy#generating_code|Transfer Settings > Generate Code]]// command. | * Use the //[[ui_copy#generating_code|Transfer Settings > Generate Code]]// command. | ||
* The [[ui_generateurl#script|Generate transfer code]] dialog will appear with the generated script or code template. | * The [[ui_generateurl#script|Generate transfer code]] dialog will appear with the generated script or code template. | ||
Line 65: | Line 65: | ||
===== Notes ===== | ===== Notes ===== | ||
- | When connecting to SSH host, you will need to [[scripting#hostkey|accept its host key]]. | + | When connecting to the SSH host, you will need to [[scripting#hostkey|accept its host key]]. |
- | When connecting to FTPS or WebDAVS host with [[tls#certificate|certificate]] signed by untrusted authority you will need to verify the certificate. | + | When connecting to FTPS or WebDAVS host with [[tls#certificate|certificate]] signed by an untrusted authority you will need to verify the certificate. |
===== [[parametrized]] Modifying the script automatically ===== | ===== [[parametrized]] Modifying the script automatically ===== | ||
Line 85: | Line 85: | ||
<code batch> | <code batch> | ||
- | winscp.com /ini=nul /script=script.tmp /parameter // c:\myfile.txt | + | winscp.com /ini=nul /log=script.log /script=script.tmp /parameter // c:\myfile.txt |
</code> | </code> | ||
Line 95: | Line 95: | ||
<code batch> | <code batch> | ||
- | rem Generate temporary script to upload %1 | + | rem Generate a temporary script to upload %1 |
- | echo open mysession >> script.tmp | + | ( |
- | echo put %1 >> script.tmp | + | ··echo open mysession |
- | echo exit >> script.tmp | + | · echo put %1 |
+ | echo <nohilite>exit</nohilite> | ||
+ | ) > script.tmp | ||
- | rem Execute script | + | rem Execute the script |
- | winscp.com /ini=nul /script=script.tmp | + | winscp.com /ini=nul /log=script.log /script=script.tmp |
- | rem Delete temporary script | + | rem Delete the temporary script |
del script.tmp | del script.tmp | ||
</code> | </code> | ||
Line 115: | Line 117: | ||
See more hints on [[#using|using parametrized batch file]]. | See more hints on [[#using|using parametrized batch file]]. | ||
- | //See [[guide_automation_advanced|guide to advanced scripting]] for examples of script generation using more powerful languages.// | + | //See [[guide_automation_conditional#scripting|*]] for a more complex example; and [[guide_automation_advanced|*]] for examples of script generation using more powerful languages.// |
~~AD~~ | ~~AD~~ | ||
Line 125: | Line 127: | ||
* Save and inspect output of the script. Use [[executables|output redirection]]. | * Save and inspect output of the script. Use [[executables|output redirection]]. | ||
- | Once you find out what was the result of the script, you can perform any action you like. E.g. after evaluating exit code of WinSCP, you can send a "success" or "error" email. For that use any command-line email client you like, e.g. [[https://www.glob.com.au/sendmail/|sendmail]].((When installing sendmail, you can ignore all references to ''/usr/lib/'' (or ''c:\usr\lib'') directories in its installation instructions, as you will be running ''sendmail.exe'' directly from a Windows batch file. Just place sendmail files to any convenient location, e.g. along with WinSCP.)) | + | Once you find out what was the result of the script, you can perform any action you like: print a message, [[script_email|send an email]], etc. |
You should also make the batch file indicate a result in its exit code, particularly if it is called from some parent system (for example [[guide_ssis|SSIS]]). | You should also make the batch file indicate a result in its exit code, particularly if it is called from some parent system (for example [[guide_ssis|SSIS]]). | ||
Line 132: | Line 134: | ||
<code batch> | <code batch> | ||
- | winscp.com /ini=nul /script=example.txt | + | winscp.com /ini=nul /log=example.log /script=example.txt |
- | if %ERRORLEVEL% neq 0 goto error | + | if %ERRORLEVEL% equ 0 ( |
- | + | ··echo Success | |
- | echo Success | + | exit /b 0 |
- | sendmail.exe -t < success_mail.txt | + | ) else ( |
- | exit /b 0 | + | ··echo Error! |
- | + | exit /b 1 | |
- | :error | + | ) |
- | echo Error! | + | |
- | sendmail.exe -t < error_mail.txt | + | |
- | exit /b 1 | + | |
</code> | </code> | ||
A similar error handling is used in [[ui_generateurl|the batch file template]] that WinSCP can generate for you. | A similar error handling is used in [[ui_generateurl|the batch file template]] that WinSCP can generate for you. | ||
- | Where for example content of ''success_mail.txt'' may be: | + | //If you require checking results of each command individually, you should better use the [[library|WinSCP .NET assembly]]. Alternatively, see the guide [[guide_automation_advanced|*]] for examples of checking script results (including XML log parsing) using more powerful languages and the guide to [[guide_interpreting_xml_log|*]] using C# language.// |
- | <code> | + | |
- | From: script@example.com | + | |
- | To: me@example.com | + | |
- | Subject: Success | + | |
- | + | ||
- | The files were uploaded successfully. | + | |
- | </code> | + | |
- | + | ||
- | //If you require checking results of each command individually, you should better use the [[library|WinSCP .NET assembly]]. Alternatively, see [[guide_automation_advanced|guide to advanced scripting]] for examples of checking script results (including XML log parsing) using more powerful languages and guide to [[guide_interpreting_xml_log|interpreting XML log for advanced scripting]] using C# language.// | + | |
===== Example ===== | ===== Example ===== | ||
Line 162: | Line 152: | ||
===== Further reading ===== | ===== Further reading ===== | ||
- | * [[troubleshooting|Troubleshooting]]; | + | * [[troubleshooting|*]]; |
* [[scripting|Scripting]] documentation; | * [[scripting|Scripting]] documentation; | ||
- | * Guide to [[guide_automation_advanced|advanced scripting]]; | + | * Guide to [[guide_automation_advanced|*]]; |
- | * [[library|WinSCP .NET assembly]]; | + | * [[library|*]]; |
* [[commandline|Command-line]] parameters; | * [[commandline|Command-line]] parameters; | ||
* WinSCP [[executables|executables]]; | * WinSCP [[executables|executables]]; | ||
* [[faq#scripting|FAQ about scripting]]; | * [[faq#scripting|FAQ about scripting]]; | ||
* Example [[scripts|scripts]]; | * Example [[scripts|scripts]]; | ||
- | * [[guide_schedule|Schedule file transfers or synchronization]]. | + | * [[guide_schedule|*]]. |