Differences

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

2009-11-21 2009-11-21
fix waiting loops + wrong session variable case (martin) checking_file_existence (martin)
Line 207: Line 207:
cscript /nologo example.js cscript /nologo example.js
</code> </code>
 +
 +===== [[checking_file_existence]] Checking file existence =====
 +You may use following [[guide_automation_advanced#wsh|Windows script host JavaScript code]] (''example.js''):
 +
 +<code javascript>
 +// Configuration
 +
 +// Remote file search for
 +//var FILEPATH = "/home/user/myfile.dat";
 +var FILEPATH = "/cygdrive/d/bordel/test/picasa3-setup.exe";
 +// Session to connect to
 +var SESSION = "session";
 +// Path to winscp.com
 +var WINSCP = "c:\\program files\\winscp\\winscp.com";
 +
 +var filesys = WScript.CreateObject("Scripting.FileSystemObject");
 +var shell = WScript.CreateObject("WScript.Shell");
 + 
 +var logfilepath = filesys.GetSpecialFolder(2) + "\\" + filesys.GetTempName() + ".xml";
 +
 +var p = FILEPATH.lastIndexOf('/');
 +var path = FILEPATH.substring(0, p);
 +var filename = FILEPATH.substring(p + 1);
 +
 +var exec;
 +
 +// run winscp to check for file existence
 +exec = shell.Exec("\"" + WINSCP + "\" /log=\"" + logfilepath + "\"");
 +exec.StdIn.Write(
 +    "option batch abort\n" +
 +    "open \"" + SESSION + "\"\n" +
 +    "ls \"" + path + "\"\n" +
 +    "exit\n");
 +
 +// wait until the script finishes
 +while (exec.Status == 0)
 +{
 +    WScript.Sleep(100);
 +    WScript.Echo(exec.StdOut.ReadAll());
 +}
 +
 +if (exec.ExitCode != 0)
 +{
 +    WScript.Echo("Error checking for file existence");
 +    WScript.Quit(1);
 +}
 +
 +// look for log file
 +var logfile = filesys.GetFile(logfilepath);
 +
 +if (logfile == null)
 +{
 +    WScript.Echo("Cannot find log file");
 +    WScript.Quit(1);
 +}
 +
 +// parse XML log file
 +var doc = new ActiveXObject("MSXML2.DOMDocument");
 +doc.async = false;
 +doc.load(logfilepath);
 +
 +doc.setProperty("SelectionNamespaces",
 +    "xmlns:w='http://winscp.net/schema/session/1.0'");
 +
 +var nodes = doc.selectNodes("//w:file/w:filename[@value='" + filename + "']");
 +
 +if (nodes.length > 0)
 +{
 +    WScript.Echo("File found");
 +    // signalize file existence to calling process;
 +    // you can also continue with processing (e.g. downloading the file)
 +    // directly fron the script here
 +    WScript.Quit(0);
 +}
 +else
 +{
 +    WScript.Echo("File not found");
 +    WScript.Quit(1);
 +}
 +</code>
 +
 +Run the script with command:
 +<code>
 +cscript /nologo example.js
 +</code>
 +
 +Following batch file shown how to continue with processing based on file exitence:
 +<code>
 +cscript /nologo example.js
 +if errorlevel 1 goto error
 +
 +echo File exists, do something
 +rem Do something
 +exit
 +
 +:error
 +echo Error or file not exists
 +</code>
 +
 +Alternatively you can continue with the processing directly in JavaScript code as suggested by respective comments.
===== [[local_move_after_successful_upload]] Moving local files to different location after successful upload ===== ===== [[local_move_after_successful_upload]] Moving local files to different location after successful upload =====

Last modified: by martin