私はたぶんこの序文を書いて、私は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
そうですね、次のようになります。そうでなければ、objFSO.FolderExists(MyZip)...フォルダを作成しますか? – livemas
おそらくobjFSO.FileExistsで、zipファイルはファイルであり、フォルダではないので? – Dave
すごい!それは私が間違っていたことです。どうもありがとうございます!!! – livemas