2016-10-25 1 views
1

J'ai lu beaucoup de choses sur l'automatisation de WinSCP, mais j'ai eu du mal à comprendre certaines choses parce qu'il supposait la connaissance d'autres choses, comme .NET assembleur, PowerShell, etc.Automatiser WinSCP pour obtenir la liste des fichiers dans le répertoire distant

Je me demande si, parlant strictement dans VBScript et le type de fichier de lot de jargon, une fois que j'ai téléchargé le portable winscp.exe, comment ouvrir simplement un site distant, donner un nom d'utilisateur et mot de passe, et télécharger une liste des fichiers dans un répertoire particulier. Protocole FTP uniquement.

Répondre

1

Il y a un 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> 

Autre que:

  • download the WinSCP .NET assembly package et l'extraire ainsi que le script.
  • register the assembly for COM. En règle générale aimez:

    %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 
    
  • Exécuter le script (list.wsf) comme:

    cscript list.wsf 
    

Vous pouvez bien sûr aussi il suffit d'exécuter winscp.comscripting comme:

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()) 

Pour plus de détails sur cette approche, voir guide to advanced FTP scripting from VB script.