vbs скрипт для отправки файлов по ftp и проверки / удаления оригинальных файлов

Я пытаюсь отправить файлы через ftp, а затем проверяю, был ли процесс завершен успешно, в этом случае я бы удалил исходные файлы и сохранил только те, которые были отправлены в целевую папку на FTP.

Мне удалось исправить скрипт, который подключается к FTP и отправляет файлы, но я не уверен, как перепроверить исходную папку с папкой на FTP, чтобы я мог определить, была ли копия успешной.

Это код для отправки файлов по FTP, и при тестировании он успешно отправляет все файлы, но я должен проверить перед удалением

Set oShell = CreateObject("Shell.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")

path = "D:\test\"

FTPUpload(path)
Sub FTPUpload(path)

On Error Resume Next

Const copyType = 16

'FTP Wait Time in ms
waitTime = 80000

FTPUser = "test"
FTPPass = "testtest"
FTPHost = "ftp.test.com"
FTPDir = "/htdocs/test/"

strFTP = "ftp://" & FTPUser & ":" & FTPPass & "@" & FTPHost & FTPDir
Set objFTP = oShell.NameSpace(strFTP)


'Upload single file       
If objFSO.FileExists(path) Then

Set objFile = objFSO.getFile(path)
strParent = objFile.ParentFolder
Set objFolder = oShell.NameSpace(strParent)

Set objItem = objFolder.ParseName(objFile.Name)

Wscript.Echo "Uploading file " & objItem.Name & " to " & strFTP
 objFTP.CopyHere objItem, copyType


End If


'Upload all files in folder
If objFSO.FolderExists(path) Then

'Entire folder
Set objFolder = oShell.NameSpace(path)

Wscript.Echo "Uploading folder " & path & " to " & strFTP
objFTP.CopyHere objFolder.Items, copyType

End If


If Err.Number <> 0 Then
Wscript.Echo "Error: " & Err.Description
End If

'Wait for upload
Wscript.Sleep waitTime

End Sub

Буду признателен за любую помощь, спасибо.

1 ответ

Решение

Не уверен, что это лучший способ, но вы можете получить список файлов через FTP командуйте и сравните результаты с тем, что вы ожидаете. Вот пример:

' Create the FTP command file...
With CreateObject("Scripting.FileSystemObject").CreateTextFile("c:\ftp.txt", True)
    .WriteLine "USER test"
    .WriteLine "testtest"
    .WriteLine "ls /htdocs/test/"
    .WriteLine "quit"
    .Close
End With

' Run the command and capture its output...
With CreateObject("WScript.Shell")
    .Run "%comspec% /c ftp -n -v -s:c:\ftp.txt ftp.test.com >c:\filelist.txt", 0, True
End With

Это создаст файл c:\filelist.txt, который вы затем можете открыть и проверить наличие файлов, которые вы загрузили. Конечно, вы можете добавить дополнительные аргументы к ls Команда, чтобы получить более подробную информацию. Например, ls -l даст вам дату обновления, а также размер файла.

Другие вопросы по тегам