이것은 내 첫 번째 게시물이므로 제 양해 해 주시기 바랍니다. vbscript를 사용하여 특정 폴더의 모든 .csv 유형 파일을 압축합니다. 일부 Google 검색을 수행 한 후이를 수행하기 위해 실행할 수있는 vbscript을 발견했으며이를 자동화하는 예약 된 작업을 활성화했습니다.SFTP 전송 파일 및 폴더로 파일 이동
내가해야 할 일은 sftp를 통해 zip 파일을 전송 한 다음 해당 zip 파일을 다른 폴더로 "이동"하는 것입니다. 필자는 전자가 명령 줄을 통해 pscp.exe를 사용하여 얻을 수 있다고 믿지만 다른 사람이 후자를 수행하는 방법을 보여줄 수 있습니까?
기본적으로 압축은 하루에 두 번 수행되므로 yyyymmdd0900.zip (9am 스케줄) 및 yyyymmdd1800.zip (오후 6:00 스케줄)과 유사한 타임 스탬프가 있습니다. 전송 후 다른 폴더로 생성 된 zip 파일을 이동 (복사가 아님)하고 싶습니다.
모든 포인터가 크게 감사하겠습니다. 모두에게 미리 감사드립니다.
편집 : 다음은 일부 Google 검색을 기반으로 함께 때린 코드입니다. 그것은 내가하고 싶은 일을합니다. 내가 제대로 포맷하는 방법을 알아낼 수 없기 때문에 "붙여 넣기"를 변명하십시오. 현재, 그것은 복사 한 후 박쥐 파일을 실행하지만 방금 "완성 된"폴더로 이동하기 전에 "PuTTY Secure Copy"를 사용하여 "최신"zip 파일을 전송해야한다는 것을 알았습니다. 누군가 이걸하는 방법을 보여 주실 수 있습니까?
파일을 지퍼로 잠그는 및
strFilepath = "C : \ 파일"다음 다시 시작 오류에 zip 파일
의 이름을 변경
strDestination = "C : 완료 \ \ 파일 \ "
strExtension ="csv "
strY 귀 = 연도 (이제)
strMonth = 오른쪽 ("0"& 월 (자), 2)
strDay = 오른쪽 ("0"&의 날 (자), 2)
strHour = 오른쪽 ("0"& 시간 (자), 2)
strMinute = 오른쪽 (지금은 "0"& 분(), 2)
strZip = strFilepath & "\"& strYear strMonth & & & strDay strHour strMinute & & ".ZIP"
세트 objFSO = CreateObject를 ("Scripting.FileSystemObject와")
세트 objFolder = objFSO.GetFolder objFolder 각 objFile 용 (strFilepath)
.파일
strFileExt = objFSO.GetExtensionName(objFile.Path)
If LCase(strFileExt) = LCase(strExtension) Then
ZipFile objFile.Path, strZip
End If
하위 ZipFile를 (strFileToZip, strArchive)
설정 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
최종 하위
다음 파일을 다른 폴더로 이동 다음,
'바르가
희미한 objFSO, objFileCopy는, objFileDelete는 점은, 파일,
희미한 strDestination, 폴더, 하위 폴더를 정보 파일 FTP 위치로 복사 파일을 secury하는 fileCount을 박쥐 파일을 실행 , strFilePath이
'문자열
strDestination =
"C는 파일 \ \ \ 완료"strFilePath = "C : \ 파일"
set objFSO = CreateObject("Scripting.fileSystemObject")
set folder = objFSO.getFolder(strFilePath)
folder.files에서 각 파일에 대해
설정 objFileCopy = objFSO.GetFile (파일)
If objFSO.GetExtensionName(file) = "zip" Then
objFSO.MoveFile objFileCopy.Path, strDestination
End If
다음
희미한 쉘
셸 설정 = createobject ("wscript.shell")
Shell.run "C : \ testsend.bat"
설정 쉘 = 아무것도
답장을 보내 주셔서 감사합니다. 죄송합니다. 전송이 원격 위치이며 파일이있는 상자의 로컬 인 "이동"에 대해 분명히 밝혀야합니다. 또한 zip을 수행 한 후 자동으로이 파일을 원한다면 파일이있는 모든 위치에서 sftp를 전송하십시오. 희망이 좀있어. – molecule
SFTP에는 작업 디렉토리라는 개념이 전혀 없습니다. 표준에 따르면 모든 경로는 절대적이어야합니다. 현재 디렉토리 개념을 에뮬레이션하는 것은 클라이언트 소프트웨어입니다. –
@Eugene, 좋은 설명. 나는 대답을 업데이트 할 것이다. 감사. –