Differences

This shows you the differences between the selected revisions of the page.

guide_automation 2020-04-04 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 >&gt; script.tmp +
-echo put %1 &gt;> script.tmp +··echo open mysession 
-echo exit >> script.tmp+· echo put %1 
 +  echo &lt;nohilite>exit&lt;/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|*]].

Last modified: by martin