Скачать несколько файлов с FTP с помощью VBScript - PullRequest
0 голосов
/ 14 февраля 2012

Я совсем не эксперт в VB Scripting, но так как на данный момент это требование в одном из моих проектов, я пытаюсь написать VBScript, который будет ПОЛУЧАТЬ все файлы из указанной папки FTP.

Мне удается получить один указанный файл, но я не могу получить все файлы в папке.Вот сценарий, который я пытаюсь использовать:

    Dim objOutStream
  Const OpenAsDefault = -2
  Const FailIfNotExist = 0
  Const ForReading = 1
  Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutStream = objFSO.OpenTextFile("C:\temp\temp\empty.txt", ForWriting, True, TristateFalse)
With objOutStream
    .WriteLine "USER myuser"   ' USERNAME
    .WriteLine "mypass"     ' Password
    .WriteLine "binary"
    .WriteLine "prompt n"
    .WriteLine "lcd /foldertocopyfrom" ' FOLDER I'm changing into
    .WriteLine "mget *"    ' Get all files with today's date in it
    .WriteLine "bye"
    .Close
End With

Set oFTPScriptShell = CreateObject("WScript.Shell")
oFTPScriptShell.Run "%comspec% /c FTP -n -s:" & "C:\temp\temp\empty.txt" & " " & "ftp.location.com", 0, True

Это не дает мне ошибки или чего-то еще, в основном ничего не дает (и да, я уверен, что в папке / foldertocopy есть файлы из: -))

Есть идеи?Что-то очевидное мне не хватает?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 15 февраля 2012

Я попробовал ваше решение, но пришлось сделать несколько небольших исправлений, чтобы оно заработало:

  • Добавлена ​​опция Explicit (для лучшего обнаружения неопределенных переменных)
  • Удален параметр TristateFalse
  • Удалено prompt с момента переключения, поскольку интерактивный режим уже выключен
  • Изменено bye на quit
  • Добавлен параметр -i в команду FTP
  • Плюс Я протестировал вашу команду FTP в командной строке, прежде чем использовать ее в своем скрипте

Вот модифицированный скрипт

Option Explicit

Const ForWriting = 2

Dim objOutStream, objFSO, objShell
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutStream = objFSO.OpenTextFile("C:\temp\temp\empty.txt", ForWriting, True)
With objOutStream
    .WriteLine "USER myuser"   ' USERNAME
    .WriteLine "mypass"     ' Password
    .WriteLine "binary"
    .WriteLine "lcd /foldertocopyfrom" ' FOLDER I'm changing into
    .WriteLine "mget *"    ' Get all files with today's date in it
    .WriteLine "quit"
    .Close
End With

Set objShell = CreateObject("WScript.Shell")
objShell.Run "%comspec% /c FTP -n -i -s:" & "C:\temp\temp\empty.txt" & " " & "ftp.location.com", 0, True
0 голосов
/ 01 февраля 2016

Пожалуйста, найдите ниже код для загрузки из местоположения ftp.

Function FTPDownload(sSite, sUsername, sPassword, sRemotePath)
Const ForWriting = 2
Dim objOutStream, objjFSO, objShell
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutStream = objFSO.OpenTextFile("C:\temp\temp\empty.txt", ForWriting, True)
With objOutStream
    .WriteLine sUsername   ' USERNAME
    .WriteLine sPassword     ' Password
    .WriteLine "binary"
    .WriteLine "cd /"& sRemotePath' FOLDER I'm changing into
    .WriteLine "mget *"    ' Get all files with today's date in it
    .WriteLine "quit"
    .Close
End With
Set objShell = CreateObject("WScript.Shell")
objShell.Run "%Comspec% /c FTP -i -s:" & "C:\temp\temp\empty.txt" & " " & sSite
End Function

Примечание, например.

sSite: 192.168.0.1

0 голосов
/ 15 февраля 2012

Я написал функцию, чтобы сделать это для вас.Вы можете прочитать и изучить его код здесь:

http://www.naterice.com/articles/51

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...