Differences
This shows you the differences between the selected revisions of the page.
| guide_automation 2019-11-05 | 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|*]]. |