Differences

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

guide_automation_conditional 2014-10-20 guide_automation_conditional 2022-10-21 (current)
Line 2: Line 2:
When [[guide_automation|automating an operation]] with WinSCP, you may want to perform it only when a certain condition is met. Typically you may want to test if a particular file exists before attempting to transfer it. When [[guide_automation|automating an operation]] with WinSCP, you may want to perform it only when a certain condition is met. Typically you may want to test if a particular file exists before attempting to transfer it.
-===== Using WinSCP .NET Assembly =====+===== [[library]] Using WinSCP .NET Assembly =====
Particularly for complex conditions or conditions involving remote files, using [[library|WinSCP .NET assembly]] is the easiest and the recommended approach. Particularly for complex conditions or conditions involving remote files, using [[library|WinSCP .NET assembly]] is the easiest and the recommended approach.
-An example of [[library_powershell|PowerShell]] script that checks is a remote file exists before downloading it:+An example of [[library_powershell|PowerShell]] script that checks if a remote file exists before downloading it:
<code powershell> <code powershell>
Line 14: Line 14:
if ($session.FileExists($remotePath)) if ($session.FileExists($remotePath))
{ {
-    Write-Host ("File {0} exists, downloading" -f $remotePath)+    Write-Host "File $remotePath exists, downloading"
    $session.GetFiles($remotePath, $localPath).Check()     $session.GetFiles($remotePath, $localPath).Check()
} }
else else
{ {
-    Write-Host ("File {0} dos not exist" -f $remotePath)+    Write-Host "File $remotePath does not exist"
} }
</code> </code>
Line 25: Line 25:
See also: See also:
-  * [[script_checking_file_existence|Checking file existence]]; +  * [[script_checking_file_existence|*]]; 
-  * [[library_powershell|Using WinSCP .NET assembly from PowerShell]];+  * [[script_downloading_when_done_file_exists|*]]; 
 +  * [[library_powershell|*]];
  * Example for ''[[library_session_fileexists#powershell|Session.FileExists]]'' (complete code for above example);   * Example for ''[[library_session_fileexists#powershell|Session.FileExists]]'' (complete code for above example);
-  * Example for ''[[library_session_getfiles#powershell|Session.GetFiles]]'' (showing how to test a local file existence and how to compare local and remote file timetamps).+  * Example [[library_example_check_existence_timestamp|*]] (showing how to test a local and a remote file existence and how to compare local and remote file timetamps).
===== [[scripting]] Conditions in a Batch File ===== ===== [[scripting]] Conditions in a Batch File =====
Line 34: Line 35:
If you do not want to use .NET assembly, for simple conditions or conditions involving local files, you may be able to move the condition outside of WinSCP [[scripting|script]] into a [[guide_automation_advanced#batch_file|wrapper batch file]]. If you do not want to use .NET assembly, for simple conditions or conditions involving local files, you may be able to move the condition outside of WinSCP [[scripting|script]] into a [[guide_automation_advanced#batch_file|wrapper batch file]].
-For example you can use an ''[[http://technet.microsoft.com/en-us/library/cc754335.aspx|if]]'' command to test a local file existence before uploading it:+For example you can use an [[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/if|''if'' command]] to test a local file existence before uploading it:
<code batch> <code batch>
-if exist c:\upload\test.txt winscp.com /script=upload.txt+if exist c:\upload\test.txt winscp.com /ini=nul /log=upload.log /script=upload.txt 
 +</code> 
 + 
 +If you need different conditions for individual script commands, you can generate the WinSCP script file on the fly step by step: 
 + 
 +<code batch> 
 +@echo off 
 +set FILE1=c:\upload\test.txt 
 +set FILE2=c:\other\file.txt 
 + 
 +
 +  echo open sftp://user:password@example.com/ -hostkey="ssh-rsa 2048 xxxxxxxxxxx..." 
 +  if exist %FILE1% echo put %FILE1% 
 +  if exist %FILE2% echo put %FILE2% 
 +  echo <nohilite>exit</nohilite> 
 +) > upload.txt 
 + 
 +winscp.com /ini=nul /log=upload.log /script=upload.txt
</code> </code>
See also: See also:
-  * [[script_checking_file_existence|Checking file existence]];+  * [[script_checking_file_existence|*]]; 
 +  * [[script_downloading_when_done_file_exists|*]];
  * [[guide_automation#results|Checking script results]];   * [[guide_automation#results|Checking script results]];
-  * [[guide_automation_advanced|Advanced FTP/SFTP scripting]]; +  * [[guide_automation_advanced|*]]; 
-  * [[guide_interpreting_xml_log|Interpreting XML log for advanced scripting]].+  * [[guide_interpreting_xml_log|*]].

Last modified: by martin