2012-06-27 306 views
2

想讓別人看看我的腳本並告訴我我在哪裏搞亂了。VBscript使用7zip壓縮日誌文件

這是一個壓縮日誌文件的腳本,然後我想將它們移動到將通過網絡共享的新文件夾中。現在,我只是試圖使用7zip正確地將文件壓縮到文件中。

我對VB非常陌生(比如2天),所以我覺得有一些語法問題。

腳本如下發現,謝謝大家提前對所有建議和幫助

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 

「循環通過日誌和zip和移動每個文件(如果需要的話,你可以只移動文件與」 .LOG 'extension)

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個壓縮文件。它目前的變化是文件被壓縮成兩個獨立的拉鍊。感謝您迄今爲止的所有幫助。在飛行中學習這個比我想象的要困難得多。 – parchambeau

相關問題