Differences
This shows you the differences between the selected revisions of the page.
2012-03-21 | 2012-03-21 | ||
dispose in vbscript and jscript (martin) | try catch finally in jscript (martin) | ||
Line 220: | Line 220: | ||
<script language="JScript"> | <script language="JScript"> | ||
- | // Setup session options | + | try |
- | var sessionOptions = WScript.CreateObject("WinSCP.SessionOptions"); | + | { |
- | sessionOptions.Protocol = Protocol_Sftp; | + | ····// Setup session options |
- | sessionOptions.HostName = "example.com"; | + | ····var sessionOptions = WScript.CreateObject("WinSCP.SessionOptions"); |
- | sessionOptions.UserName = "user"; | + | ····sessionOptions.Protocol = Protocol_Sftp; |
- | sessionOptions.Password = "mypassword"; | + | ····sessionOptions.HostName = "example.com"; |
- | sessionOptions.SshHostKey = "ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"; | + | ····sessionOptions.UserName = "user"; |
- | + | ····sessionOptions.Password = "mypassword"; | |
- | var session = WScript.CreateObject("WinSCP.Session"); | + | ····sessionOptions.SshHostKey = "ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"; |
+ | ···· | ||
+ | ····var session = WScript.CreateObject("WinSCP.Session"); | ||
- | // Connect | + | try |
- | session.Open(sessionOptions); | + | { |
+ | ········// Connect | ||
+ | ········session.Open(sessionOptions); | ||
- | var today = new Date(); | + | ········var today = new Date(); |
- | var stamp = | + | ········var stamp = |
- | ···today.getFullYear() + | + | ···········today.getFullYear() + |
- | ···(today.getMonth() + 1 < 10 ? "0" : "") + (today.getMonth() + 1) + | + | ···········(today.getMonth() + 1 < 10 ? "0" : "") + (today.getMonth() + 1) + |
- | ···(today.getDate() < 10 ? "0" : "") + today.getDate(); | + | ···········(today.getDate() < 10 ? "0" : "") + today.getDate(); |
- | var fileName = "export_" + stamp + ".txt"; | + | ········var fileName = "export_" + stamp + ".txt"; |
- | var remotePath = "/home/user/sysbatch/" + fileName; | + | ········var remotePath = "/home/user/sysbatch/" + fileName; |
- | var localPath = "d:\\backup\\" + fileName; | + | ········var localPath = "d:\\backup\\" + fileName; |
- | var fs = WScript.CreateObject("Scripting.FileSystemObject"); | + | ········var fs = WScript.CreateObject("Scripting.FileSystemObject"); |
- | ······· | + | ··············· |
- | // Manual "remote to local" synchronization. | + | ········// Manual "remote to local" synchronization. |
- | // You can achieve the same using: | + | ········// You can achieve the same using: |
- | // var transferOptions = WScript.CreateObject("WinSCP.TransferOptions"); | + | ········// var transferOptions = WScript.CreateObject("WinSCP.TransferOptions"); |
- | // transferOptions.IncludeMask = fileName; | + | ········// transferOptions.IncludeMask = fileName; |
- | // session.SynchronizeDirectories( | + | ········// session.SynchronizeDirectories( |
- | // SynchronizationMode_Local, localPath, remotePath, false, false, SynchronizationCriteria_Time, | + | ········// SynchronizationMode_Local, localPath, remotePath, false, false, SynchronizationCriteria_Time, |
- | // transferOptions).Check(); | + | ········// transferOptions).Check(); |
- | if (session.FileExists(remotePath)) | + | ········if (session.FileExists(remotePath)) |
- | { | + | ········{ |
- | ···var download; | + | ···········var download; |
- | ···if (!fs.FileExists(localPath)) | + | ···········if (!fs.FileExists(localPath)) |
- | ···{ | + | ···········{ |
- | ·······WScript.Echo("File " + remotePath + " exists, local backup " + localPath + " does not"); | + | ···············WScript.Echo("File " + remotePath + " exists, local backup " + localPath + " does not"); |
- | ·······download = true; | + | ···············download = true; |
- | ···} | + | ···········} |
- | ···else | + | ···········else |
- | ···{ | + | ···········{ |
- | ·······var remoteWriteTime = new Date(session.GetFileInfo(remotePath).LastWriteTime); | + | ···············var remoteWriteTime = new Date(session.GetFileInfo(remotePath).LastWriteTime); |
- | ·······var localWriteTime = fs.GetFile(localPath).DateLastModified; | + | ···············var localWriteTime = fs.GetFile(localPath).DateLastModified; |
- | ········if (remoteWriteTime > localWriteTime) | + | ················if (remoteWriteTime > localWriteTime) |
- | ·······{ | + | ···············{ |
- | ···········WScript.Echo( | + | ···················WScript.Echo( |
- | ···············"File " + remotePath + " as well as local backup " + localPath + " exist, " + | + | ·······················"File " + remotePath + " as well as local backup " + localPath + " exist, " + |
- | ···············"but remote file is newer (" + remoteWriteTime + ") than local backup (" + localWriteTime + ")"); | + | ·······················"but remote file is newer (" + remoteWriteTime + ") than local backup (" + localWriteTime + ")"); |
- | ···········download = true; | + | ···················download = true; |
+ | } | ||
+ | else | ||
+ | { | ||
+ | WScript.Echo( | ||
+ | "File " + remotePath + " as well as local backup " + localPath + " exist, " + | ||
+ | "but remote file is not newer (" + remoteWriteTime + ") than " + | ||
+ | "local backup local backup (" + localWriteTime + ")"); | ||
+ | download = false; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if (download) | ||
+ | { | ||
+ | // Download the file and throw on any error | ||
+ | session.GetFiles(remotePath, localPath).Check(); | ||
+ | |||
+ | WScript.Echo("Download to backup done."); | ||
+ | } | ||
} | } | ||
else | else | ||
{ | { | ||
- | WScript.Echo( | + | WScript.Echo("File " + remotePath + " does not exist yet"); |
- | ················"File " + remotePath + " as well as local backup " + localPath + " exist, " + | + | |
- | ···············"but remote file is not newer (" + remoteWriteTime + ") than " + | + | |
- | "local backup local backup (" + localWriteTime + ")"); | + | |
- | download = false; | + | |
} | } | ||
} | } | ||
- | + | ····finally | |
- | ····if (download) | + | |
{ | { | ||
- | // Download the file and throw on any error | + | // Disconnect, clean up |
- | session.GetFiles(remotePath, localPath).Check(); | + | session.Dispose(); |
- | + | ||
- | WScript.Echo("Download to backup done."); | + | |
} | } | ||
} | } | ||
- | else | + | catch (e) |
{ | { | ||
- | WScript.Echo("File " + remotePath + " does not exist yet"); | + | WScript.Echo("Error: " + e.message); |
+ | ···WScript.Quit(1); | ||
} | } | ||
- | |||
- | // Disconnect, clean up | ||
- | session.Dispose(); | ||
</script> | </script> |