2012-06-27 11 views
2

누군가 내 스크립트를보고 내가 엉망이 된 곳을 알려주시겠습니까?VBscript로 7zip으로 로그 파일을 압축하십시오.

로그 파일을 압축하는 스크립트로 네트워크를 통해 공유 할 새 폴더로 옮기고 싶습니다. 지금 당장은 7zip을 올바르게 사용하여 파일을 압축하는 부분을 얻으려고합니다.

나는 2 일과 같이 VB에서 매우 익숙하다. 그래서 나는 약간의 구문 문제가 있다고 생각한다. 스크립트는 다음과 발견

모든 조언에 미리 감사하고 .LOG '필요한 경우, 당신은 단지와 파일을 이동할 수 있습니다 (각 파일을 로그 및 우편을 통해 루프 및 이동'

Option Explicit 

WScript.Echo "Press to start zipping log files." 

Dim objFile, objPath, objFolder, Command, PathLogs, RetVal 
Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject") 
Dim objShell: Set objShell = CreateObject("WScript.Shell") 

PathLogs = "C:\Testscripts\testfolder\" 'This path just has some test logs 

도움 '확장자)

Set objPath = objFSO.GetFolder(PathLogs) 
For Each objFile In objPath.Files 
If (LCase(objfso.GetExtensionName(objFile)) = "log") Then 
    Wscript.Echo objFile.Name 
    ' zip and move files 
    'Command = """C:\Program Files\7-zip\7z.exe"" -m -ex """ & PathLogs &  \objFile.Name objfso.GetBaseName(objFile) & "*.zip"" """ & PathLogs & objFile.Name & """" 
    Command = ""C:\Program Files\7-zip\7z.exe"" a -m -ex " & PathLogs & "" & objFile.Name & ".zip " & PathLogs & "" & objFile.Name & " 
     WScript.Echo "Command: " & Command 
RetVal = objShell.Run(Command,0,true) 

End If 

Next 

WScript.Echo "Zip Successful." 

답변

2

인용문이 잘못되었습니다. 문자열 내에서 따옴표를 사용하려면 따옴표를 복제해야합니다.

Command = """C:\Program Files\7-zip\7z.exe"" a -m -ex " _ 'this is the first part of the string 
      & PathLogs & objFile.Name & ".zip " & PathLogs & objFile.Name 

로그 파일이나 경로 로그에 공백이 포함될 수있는 경우 따옴표로 묶어야합니다.

+0

내 오류가 수정되었지만 실제로 파일을 압축하지 않는 문제가 있습니다. 스크립트가 완료되고 모든 에코가 통과하지만 실제로 찾은 로그 파일을 압축하지 않는다고 말합니다. 어떤 제안? – parchambeau

+1

적어도 내 7z.exe는 -m 및 -ex를 인식하지 못합니다. 그것이 없으면 스크립트가 작동합니다. 명령을 인쇄하여 명령 줄에서 수동으로 실행하거나 objShell.Run의 반환 코드를 평가하는 것이 좋습니다. – Stefan

+0

예, 감사합니다. 그것은 지퍼로 고정 문제. 내 문제는 이제 모든 로그 파일을 압축하여 1 개의 압축 파일로 만들려고한다는 것입니다. 현재 파일이 두 개의 개별 zip으로 압축되는 변경 사항이있는 방식입니다. 지금까지의 모든 도움에 감사드립니다. 이 사실을 알고있는 것은 생각보다 조금 어렵습니다. – parchambeau