【问题标题】:Automate WinSCP to get listing of files in remote directory自动化 WinSCP 以获取远程目录中的文件列表
【发布时间】:2016-10-25 01:37:37
【问题描述】:

我已经阅读了很多关于自动化 WinSCP 的文章,但其中一些我无法理解,因为它假定了解其他知识,例如 .NET 程序集、PowerShell 等。

我想知道,严格来说,用 VBScript 和批处理文件类型的术语来说,一旦我下载了便携式 winscp.exe,如何简单地打开一个远程站点,提供用户名和密码,然后下载一个特定目录中的文件列表。仅 FTP 协议。

【问题讨论】:

    标签: batch-file vbscript winscp


    【解决方案1】:

    有一个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>
    

    除此之外:

    • download the WinSCP .NET assembly package 并将其与脚本一起提取。
    • register the assembly for COM。通常像:

      %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
      
    • 像这样运行脚本 (list.wsf):

      cscript list.wsf
      

    你当然也可以运行 winscp.com scripting 喜欢:

    Set shell = CreateObject("WScript.Shell")
    Set exec = shell.Exec("winscp.com /command ""open ftp://username:password@ftp.example.com/"" ""ls /remote/path"" ""exit""")
    
    WScript.Echo(exec.StdOut.ReadAll())
    

    有关此方法的更多详细信息,请参阅guide to advanced FTP scripting from VB script

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 2011-09-13
      • 1970-01-01
      • 2011-09-17
      相关资源
      最近更新 更多