Differences
This shows you the differences between the selected revisions of the page.
script_checking_file_existence 2014-12-22 | script_checking_file_existence 2024-09-02 (current) | ||
Line 3: | Line 3: | ||
===== [[remote]] Remote file existence ===== | ===== [[remote]] Remote file existence ===== | ||
- | ==== Using WinSCP .NET Assembly ==== | + | ==== [[library]] Using WinSCP .NET Assembly ==== |
Use method ''[[library_session_fileexists|Session.FileExists]]'' from [[library|WinSCP .NET assembly]]. | Use method ''[[library_session_fileexists|Session.FileExists]]'' from [[library|WinSCP .NET assembly]]. | ||
- | If you do not have your favorite language, use [[library_powershell|PowerShell]]: | + | The following example uses a [[library_powershell|PowerShell]] script. If you have another preferred language, you can easily translate it. |
<code powershell> | <code powershell> | ||
Line 13: | Line 13: | ||
if ($session.FileExists($remotePath)) | if ($session.FileExists($remotePath)) | ||
{ | { | ||
- | Write-Host ("File {0} exists" -f $remotePath) | + | Write-Host "File $remotePath exists" |
} | } | ||
</code> | </code> | ||
Line 19: | Line 19: | ||
See complete [[library_session_fileexists#powershell|PowerShell example for Session.FileExists]]. | See complete [[library_session_fileexists#powershell|PowerShell example for Session.FileExists]]. | ||
- | If you are not looking for a specific file, but for any file matching a mask (e.g. ''*.txt''), you need to use ''Session.ListDirectory'' and [[library_example_listing_files_matching_wildcard|query returned list of files]]. | + | If you are not looking for a specific file, but for any file matching a mask (e.g. ''*.txt''), you can use the ''[[library_session_enumerateremotefiles|Session.EnumerateRemoteFiles]]''. For a complex example, that uses this technique, see [[script_downloading_when_done_file_exists#separate|*]]. |
~~AD~~ | ~~AD~~ | ||
==== [[scripting]] Using WinSCP Scripting ==== | ==== [[scripting]] Using WinSCP Scripting ==== | ||
- | You can use a ''[[scriptcommand_stat|stat]]'' command in ''[[scriptcommand_option|option batch abort]]'' mode to query file attributes. If the file does not exist, the ''stat'' command fails and so does the script. Then, [[scripting#checking_results|test WinSCP exit code]] to determine, if the file exists or not. | + | You can use a ''[[scriptcommand_stat|stat]]'' command in the ([[scripting#using_scripting|default]]) ''[[scriptcommand_option#batch|option batch abort]]'' mode to query file attributes. If the file does not exist, the ''stat'' command fails and so does the script. Then, [[scripting#result|test WinSCP exit code]] to determine, if the file exists or not. |
<code batch> | <code batch> | ||
Line 31: | Line 31: | ||
set REMOTE_PATH=/home/user/test.txt | set REMOTE_PATH=/home/user/test.txt | ||
winscp.com /command ^ | winscp.com /command ^ | ||
- | "option batch abort" ^ | ||
"open mysession" ^ | "open mysession" ^ | ||
"stat %REMOTE_PATH%" ^ | "stat %REMOTE_PATH%" ^ | ||
Line 40: | Line 39: | ||
echo File %REMOTE_PATH% exists | echo File %REMOTE_PATH% exists | ||
rem Do something | rem Do something | ||
- | exit 0 | + | exit /b 0 |
:error | :error | ||
- | echo Error or file %REMOTE_PATH% not exists | + | echo Error or file %REMOTE_PATH% <nohilite>not</nohilite> exists |
- | exit 1 | + | exit /b 1 |
+ | </code> | ||
+ | |||
+ | If the further processing involves WinSCP commands, you can add the commands directly to the main WinSCP script, just after the ''stat'' command. For an example, see [[script_downloading_when_done_file_exists#fixed_scripting|*]]. | ||
+ | |||
+ | To check for existence of any file matching a mask, instead of a specific file, enable ''[[scriptcommand_option#failonnomatch|option failonnomatch on]]'' mode and use ''[[scriptcommand_ls|ls mask]]'' command, instead of ''stat name'' command: | ||
+ | |||
+ | <code batch> | ||
+ | set REMOTE_PATH=/home/user/*.txt | ||
+ | winscp.com /command ^ | ||
+ | "open mysession" ^ | ||
+ | "option failonnomatch on" ^ | ||
+ | "ls %REMOTE_PATH%" ^ | ||
+ | "exit" | ||
</code> | </code> | ||
===== [[local]] Local file existence ===== | ===== [[local]] Local file existence ===== | ||
- | * In [[library_powershell|PowerShell]], use ''[[http://technet.microsoft.com/en-us/library/hh849776.aspx|Test-Path]]'' cmdlet. See [[library_session_getfiles#powershell|example]]. | + | * In [[library_powershell|PowerShell]], use ''[[ps>microsoft.powershell.management/test-path|Test-Path]]'' cmdlet. See an example in [[library_example_check_existence_timestamp#powershell|*]]. |
- | * In a batch file, use ''[[http://technet.microsoft.com/en-us/library/cc754335.aspx|if exist]]'' command. See [[guide_automation_conditional#scripting|example]]. | + | * In a batch file, use ''[[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/if|if exist]]'' command. See [[guide_automation_conditional#scripting|example]]. |
- | * In .NET, use ''[[http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx|File.Exists]]'' method. See [[library_session_getfiles#csharp|C#]] and [[library_session_getfiles#vbnet|VB.NET]] example. | + | * In .NET, use ''[[dotnet>system.io.file.exists|File.Exists]]'' method. See [[library_example_check_existence_timestamp#csharp|C#]] and [[library_example_check_existence_timestamp#vbnet|VB.NET]] example in [[library_example_check_existence_timestamp|*]]. |
- | * In WSH, use ''[[http://msdn.microsoft.com/en-us/library/x23stk5t.aspx|Scripting.FileSystemObject.FileExists]]'' method. See [[library_session_getfiles#jscript|JScript]] and [[library_session_getfiles#jscript|VBScript]] example. | + | * In WSH, use ''[[https://learn.microsoft.com/en-us/previous-versions/x23stk5t(v=vs.85)|Scripting.FileSystemObject.FileExists]]'' method. See [[library_example_check_existence_timestamp#jscript|JScript]] and [[library_example_check_existence_timestamp#vbscript|VBScript]] example in [[library_example_check_existence_timestamp|*]]. |
===== Further Reading ===== | ===== Further Reading ===== | ||
Line 58: | Line 70: | ||
* Guide to [[guide_automation|scripting/automation]]; | * Guide to [[guide_automation|scripting/automation]]; | ||
* [[library|WinSCP .NET assembly]]; | * [[library|WinSCP .NET assembly]]; | ||
- | * [[library_powershell|Using WinSCP .NET Assembly from PowerShell]]. | + | * [[library_powershell|*]]. |