Это мой первый пост, так что прошу прощения за мое невежество. Я использую vbscript для архивирования всех файлов типа .csv в определенной папке. После некоторых поисков в Google я нашел работоспособное vbscript для этого и включил запланированное задание для автоматизации этого.
Далее мне нужно передать zip-файл через sftp, а затем «переместить» этот zip-файл в другую папку. Я считаю, что первое может быть достигнуто с помощью pscp.exe через командную строку, но может кто-нибудь показать мне, как это сделать?
Обычно архивирование выполняется два раза в день, поэтому у него будет метка времени, аналогичная yyyymmdd0900.zip (для расписания на 9 часов) и yyyymmdd1800.zip (для расписания на 6 часов). После передачи я хочу переместить (не копировать) созданный zip-файл в другую папку.
Любые указатели будут с благодарностью. Спасибо всем заранее.
РЕДАКТИРОВАТЬ: Вот код, который я собрал вместе на основе некоторых поисков Google Он делает то, что я хочу. Пожалуйста, извините за "вставку", так как я не мог понять, как правильно отформатировать его. В настоящее время он запускает bat-файл после копирования, но я только что заметил, что мне нужно отправить (используя PuTTY Secure Copy) «последний» zip-файл, прежде чем перемещать его в «завершенную» папку. Может кто-нибудь показать мне, как это сделать?
Архивирование файла и переименование zip-файла
В случае ошибки Продолжить Далее
strFilepath = "c: \ files"
strDestination = "c: \ files \ complete \"
strExtension = "csv"
strYear = Год (сейчас)
strMonth = Right ("0" & Month (Now), 2)
strDay = Right ("0" & Day (Now), 2)
strHour = Right ("0" & Hour (Now), 2)
strMinute = Right ("0" & Minute (Now), 2)
strZip = strFilepath & "\" & strYear & strMonth & strDay & strHour & strMinute & ".zip"
Set objFSO = CreateObject ("Scripting.FileSystemObject")
Установить objFolder = objFSO.GetFolder (strFilepath)
Для каждого objFile в objFolder.Files
strFileExt = objFSO.GetExtensionName(objFile.Path)
If LCase(strFileExt) = LCase(strExtension) Then
ZipFile objFile.Path, strZip
End If
Далее
Sub ZipFile (strFileToZip, strArchive)
Set objFSO = CreateObject ("Scripting.FileSystemObject")
If Not objFSO.FileExists(strArchive) Then
Set objTxt = objFSO.CreateTextFile(strArchive)
objTxt.Write "PK" & Chr(5) & Chr(6) & String(18, Chr(0))
objTxt.Close
End If
Set objApp = CreateObject( "Shell.Application" )
intCount = objApp.NameSpace(strArchive).Items.Count + 1
objApp.NameSpace(strArchive).CopyHere strFileToZip
Do
WScript.Sleep 200
set objNameSpace = objApp.NameSpace(strArchive)
If Not objNameSpace is nothing Then
If objNameSpace.Items.Count = intCount Then
Exit Do
End If
End If
Loop
End Sub
Переместите файл в другую папку, а затем запустите bat-файл, чтобы защитить копию файла на FTP-сервере
Варс
Dim objFSO, objFileCopy, objFileDelete, точка, файлы, файл
Dim strDestination, папка, подпапка, fileCount, strFilePath
Строки
strDestination = "C: \ Files \ Completed \"
strFilePath = "C: \ Files"
set objFSO = CreateObject("Scripting.fileSystemObject")
set folder = objFSO.getFolder(strFilePath)
Для каждого файла в папке .file
Установить objFileCopy = objFSO.GetFile (файл)
If objFSO.GetExtensionName(file) = "zip" Then
objFSO.MoveFile objFileCopy.Path, strDestination
End If
Далее
тусклая оболочка
Set shell = createobject ("wscript.shell")
Shell.run "C: \ testsend.bat"
Установить оболочку = ничего