2016-05-17 6 views
0

私はたぶんこの序文を書いて、私はVBSスクリプトにはとても新しいと言っているはずです。私は非常に似ているC#でいくつかの経験があります。私は仕事のための仕事を完了しようとしています。ジップ上書きの修正

このタスクはある場所を検索し、特定の日付より古いすべてのファイルを検索します。その後、スクリプトはこれらのファイルをすべて取り出し、zipファイルの月に基づいてzipフォルダに圧縮します。このタスクは毎月実行されます。書かれた元のスクリプト(読んだもの:Googleからまとめたもの)は小さなサンプルでうまくいきました。しかし、10Kを超えるファイルを持つフォルダに適用すると、約3000のファイルの後に爆発し、アーカイブが停止しました。

私は、スクリプトを毎週実行して影響を減らすことにしました。理想的なシナリオは毎週実行され、その月に名前が付けられた1つのzipファイルにすべてのファイルがコンパイルされます。スクリプトはmayの最初の月曜日を実行し、 "May"フォルダに100個のファイルを格納します。その後、2番目の月曜日にスクリプトが再び実行され、すべてのファイルが同じMay Zipファイルに置かれます。私が持っている問題は、現在のファイルを上書きすることです。

ここに私のコードです。助言がありますか?

OriginalDir = "C:\Users\me\Desktop\Log_Test\Test" 

DoZips(OriginalDir) 

Function DoZips(Dir1) 

'create empty zip file 

a = Split(Dir1,"\",-1) 

MyZip = Dir1 & "\" & MonthName(Month(Now)-1) & "_" & "archive" & ".zip"  'Naming of the zip file 

CreateObject("Scripting.FileSystemObject") _ 
.CreateTextFile(MyZip, True) _ 
.Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar) 

'zip content into zip file 

on error resume next 

Set oFS = CreateObject("Scripting.FileSystemObject") 

Set oFolder = oFS.GetFolder(Dir1) 

For Each File In oFolder.Files 

    If Right(LCase(file.path),4) <> ".zip" Then 

     If File.DateLastModified < Date Then  'Change this number to set the age cutoff 

      With CreateObject("Shell.Application") 

       .NameSpace(MyZip).CopyHere File.path  'Copy the file to the zip folder 

        wScript.Sleep 4000  'Set wait time between archive and delete to ensure complete file archive 

      file.delete  'Delete the file after archive  

      End With 

     End If 

    End If 

Next 

CreateObject("WScript.Shell").Popup "All Files in " & myZip & " Successfully zipped", 5, "Compression" 



set ObjFSO = CreateObject("Scripting.FileSystemObject") 
Set ObjLog = objFSO.CreateTextFile("C:\Users\me\Desktop\Log_Test\log.txt") 
objLog.WriteLine nCompressed & " of" & ubound(arFiles) + 1 &_ 
" Eligible files were compressed and zipped to location " & myZip & " on " & Date 

End Function 

答えて

1

あなたのCreateTextFile呼び出し、ファイルが最初に現在の月のために存在している場合...あなたは新しい、空のzipファイルを毎回作成することを意味し、

チェックをパラメータを上書きとしてTrueを渡し、それがまだ存在しない場合にのみ作成してください...

+0

そうですね、次のようになります。そうでなければ、objFSO.FolderExists(MyZip)...フォルダを作成しますか? – livemas

+0

おそらくobjFSO.FileExistsで、zipファイルはファイルであり、フォルダではないので? – Dave

+0

すごい!それは私が間違っていたことです。どうもありがとうございます!!! – livemas

関連する問題