Ne znam da li ti ovo još uvek treba, ali može da posluži i za neke druge stvari pa evo... Opcija 2.
Dve bitne stvari:
1. ti pominješ ovaj oblik: 25.04.2014 09:04
Tebi program tako prikaže vreme modifikacije. Da promeniš region and language settings, video bi drugačiji prikaz. Zašto ti ovo govorim?
Zato što će skripta da radi sa onim formatom datuma i vremena koji se koristi na tvom PC-ju.
Ovo nije nikakav problem, samo se radi o tome da će skripta insistirati da se podaci unesu u tom obliku.
Konkretno, kod mene na PC-ju je bilo šta od ovoga prihvatljivo:
25.04.2014 09:04
25.4.2014 09:04
25.4.14 09:04
25.4.14 9:4
... i slične kombinacije.
Sve će biti pravilno obrađeno. U svakom slučaju, u promptu će biti postavljena default vrednost (trenutni datum i vreme) tako da vidiš koji format je optimalan.
2. skripta se ne snalazi sa razlikom u vremenu vezanom za daylight saving. Znači, za file modifikovan u januaru u 20h ti treba da uneseš 21h kako bi dobio efekat koji želiš. Nažalost, nisam našao jednostavan način u VBS-u da ovo rešim. Kontam da tebi ovo nije neki konkretan problem.
Upotreba: drag & drop foldera. Dobićeš par pitanja i na kraju summary:
- unos datuma i vremena modifikacije
- unos ekstenzije file-ova koje treba obraditi (default: html; ali može biti bilo šta)
- brisati ili samo napraviti listu
- potvrda
+ Primeri logova
Brisanje:
C:\Users\Borislav\Desktop\Temp\folderB\file71 - Copy (2).html
C:\Users\Borislav\Desktop\Temp\folderB\file71 - Copy (3).html
C:\Users\Borislav\Desktop\Temp\folderB\file71 - Copy (4).html <--- Error!
C:\Users\Borislav\Desktop\Temp\folderB\file71 - Copy (5).html <--- Error!
C:\Users\Borislav\Desktop\Temp\folderB\file71 - Copy (6).html
C:\Users\Borislav\Desktop\Temp\folderB\file71 - Copy (7).html
C:\Users\Borislav\Desktop\Temp\folderB\file71 - Copy.html
C:\Users\Borislav\Desktop\Temp\folderB\file71.html
Deleted 6 files.
Number of errors: 2
Listing:
C:\Users\Borislav\Desktop\Temp\New Text Document.txt
Found 1 files.
Set oFSO = CreateObject("Scripting.FileSystemObject")
Sub CheckMatch(sFilePath)
Set oFile = oFSO.GetFile(sFilePath)
sModifiedDate = CDate(oFile.DateLastModified)
sModifiedDate = FormatDateTime(sModifiedDate, 2) & " " & FormatDateTime(sModifiedDate,4)
If sModifiedDate <> sDateToFind Then DeleteAndLog sFilePath
End Sub
Sub ShowSubFolders(Folder)
For Each Subfolder In Folder.SubFolders
Set objFolder = oFSO.GetFolder(Subfolder.Path)
Set colFiles = objFolder.Files
For Each objFile In colFiles
If LCase(oFSO.GetExtensionName(objFile.Path)) = sExt Then CheckMatch objFile.Path
Next
ShowSubFolders Subfolder
Next
End Sub
Sub DeleteAndLog(sFilePath)
oLogFile.Write(sFilePath)
nCount = nCount + 1
On Error Resume Next
If bDelete Then oFSO.DeleteFile sFilePath, True
If Err <> 0 Then
oLogFile.WriteLine(" <--- Error!")
nErrCount = nErrCount + 1
Else
oLogFile.WriteLine("")
End If
On Error Goto 0
End Sub
'-----------------------------------
If WScript.Arguments.length = 0 Then
MsgBox "Drag and drop a folder with html files"
WScript.Quit
End If
sStartFolder = WScript.Arguments(0)
If Not oFSO.FolderExists(sStartFolder) Then
MsgBox "This is not a folder!"
WScript.Quit
End If
On Error Resume Next
bDateOK = False
While Not bDateOK
sDate = InputBox("Enter date and time of change:", "Search for files modified on...", FormatDateTime(Date(), 2) & " " & FormatDateTime(Time(),4))
If sDate = "" Then WScript.Quit
sDateToFind = CDate (sDate)
If Err = 0 Then bDateOK = True
Err.Clear
sExt = InputBox("Enter file extension to process:", "Search for files of type...", "html")
If sExt = "" Then WScript.Quit
sExt = LCase(sExt)
bDelete = False
If MsgBox("Delete files that are not modified on specified date and time?" & vbCrLf & vbCrLf & "Yes - delete files" & vbCrLf & vbCrLf & "No - don't delete, only list files", 4) = 6 Then bDelete = True
If bDateOK Then
If MsgBox("You entered: " & sDate & vbCrLf & vbCrLf & FormatDateTime(sDateToFind, 1) & " " & FormatDateTime(sDateToFind,4) & vbCrLf & vbCrLf & "File extension: " & sExt & vbCrLf & vbCrLf & "In folder: " & sStartFolder & vbCrLf & vbCrLf & "Delete files: " & bDelete & vbCrLf & vbCrLf & "Is this correct?", 4) <> 6 Then bDateOK = False
End If
Wend
sDateToFind = FormatDateTime(sDateToFind, 2) & " " & FormatDateTime(sDateToFind,4)
On Error Goto 0
Set oLogFile = oFSO.OpenTextFile(oFSO.GetParentFolderName(WScript.ScriptFullName) & "\Log_find_changed.txt", 2, True)
Set objFolder = oFSO.GetFolder(sStartFolder)
Set colFiles = objFolder.Files
nCount = 0
nErrCount = 0
For Each objFile In colFiles
If LCase(oFSO.GetExtensionName(objFile.Path)) = sExt Then CheckMatch objFile.Path
Next
ShowSubfolders objFolder
oLogFile.WriteBlankLines(3)
If bDelete Then
oLogFile.WriteLine("Deleted " & nCount - nErrCount & " files." & vbCrLf & vbCrLf & "Number of errors: " & nErrCount)
Else
oLogFile.WriteLine("Found " & nCount & " files.")
End If
oLogFile.Close
MsgBox "Done!"
|