2016-10-25 2 views
1

Ich habe eine Menge über WinSCP zu automatisieren, aber einige davon hatte ich Probleme zu verstehen, weil es andere Dinge, wie .NET Assembly, PowerShell, usw. vorausgesetztAutomatisieren WinSCP, um eine Liste von Dateien im Remote-Verzeichnis

Ich frage mich, wenn, rein strikt in VBScript und Batch-Datei Dateityp von Jargon, sobald ich das portable winscp.exe heruntergeladen habe, wie man einfach eine Remote-Site öffnen, geben Sie einen Benutzernamen und ein Passwort, und laden Sie eine Liste der Dateien in einem bestimmten Verzeichnis. Nur FTP-Protokoll.

Antwort

1

Es gibt eine example for using the Session.ListDirectory from VBScript:

<job>                
<reference object="WinSCP.Session"/> 
<script language="VBScript"> 

Option Explicit 

' Setup session options 
Dim sessionOptions 
Set sessionOptions = WScript.CreateObject("WinSCP.SessionOptions") 
With sessionOptions 
    .Protocol = Protocol_Ftp 
    .HostName = "ftp.example.com" 
    .UserName = "user" 
    .Password = "mypassword" 
End With 

Dim session 
Set session = WScript.CreateObject("WinSCP.Session") 

' Connect 
session.Open sessionOptions 

Dim directoryInfo 
Set directoryInfo = session.ListDirectory("/remote/path") 

Dim fileInfo 
For Each fileInfo In directoryInfo.Files 
    WScript.Echo fileInfo.Name & " with size " & fileInfo.Length & _ 
     ", permissions " & fileInfo.FilePermissions & _ 
     " and last modification at " & fileInfo.LastWriteTime 
Next 

' Disconnect, clean up 
session.Dispose 

</script> 
</job> 

Other than that:

  • download the WinSCP .NET assembly package und entpacken Sie es mit dem Skript zusammen.
  • register the assembly for COM. Normalerweise mag:

    %WINDIR%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe WinSCPnet.dll /codebase /tlb:WinSCPnet32.tlb 
    %WINDIR%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe WinSCPnet.dll /codebase /tlb:WinSCPnet64.tlb 
    
  • Führen Sie das Skript (list.wsf) wie:

    cscript list.wsf 
    

Sie können natürlich auch laufen nur winscp.comscripting wie:

Set shell = CreateObject("WScript.Shell") 
Set exec = shell.Exec("winscp.com /command ""open ftp://username:[email protected]/"" ""ls /remote/path"" ""exit""") 

WScript.Echo(exec.StdOut.ReadAll()) 

Weitere Einzelheiten zu diesem Ansatz finden Sie unter guide to advanced FTP scripting from VB script.

Verwandte Themen