У меня есть каталог, содержащий множество файлов с одинаковым именем, вложенных в разные папки и подпапки. Я пытаюсь создать скрипт vbs, который будет искать в каталоге и находить любые файлы с именем «история» и записывать имя, путь и дату изменения в файлы.
Я успешно смог создать сценарий для возврата всех файлов в папке, но не смог сделать так, чтобы записывались только те, которые называются «История». Я пытался добавить оператор If в for, чтобы он выглядел так:
For Each ObjFolder In ObjSubFolders
If ObjFolder.Name = "history*.*" Then
ResultLogFile.WriteLine(ObjFolder.Name & vbab & ObjFolder.Path)
End If
Но это не сработало
Это то, что у меня есть до сих пор:
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim fso
Dim OutputFileName
Dim ResultLogFile
vCurrentDate = Now
'Year string
vCurrentYear = CStr(DatePart("yyyy",vCurrentDate))
'Month string
If DatePart("m",vCurrentDate) < 10 Then
vCurrentMonth = "0" & CStr(DatePart("m",vCurrentDate))
Else
vCurrentMonth = CStr(DatePart("m",vCurrentDate))
End If
'Day string
If DatePart("d",vCurrentDate) < 10 Then
vCurrentDay = "0" & CStr(DatePart("d",vCurrentDate))
Else
vCurrentDay = CStr(DatePart("d",vCurrentDate))
End If
Set fso = CreateObject("Scripting.FileSystemObject")
OutputFileName = "C:\historylogs\" & vCurrentYear & "-" & vCurrentMonth & "-" & vCurrentDay & ".tsv"
'MySourcePath = "C:\Test Folder\"
'Check if file already exists:
If fso.FileExists(OutputFileName) Then
'File exists, so open it for appending and add no new header info:
Set ResultLogFile = fso.OpenTextFile(OutputFileName, ForAppending, True, TristateTrue)
Else
'File did not exist, so create it and add a header
Set ResultLogFile = fso.OpenTextFile(OutputFileName, ForWriting, True, TristateTrue)
'Create log headers
ResultLogFile.WriteLine "FileName" & vbTab & "FilePath" & vbTab & "DateLastModified"
End If
GetFiles("C:\Test Folder")
Function GetFiles(FolderName)
'On Error Resume Next
Dim ObjFolder
Dim ObjSubFolders
Dim ObjSubFolder
Dim ObjFiles
Dim ObjFile
Set ObjFolder = fso.GetFolder(FolderName)
Set ObjFiles = ObjFolder.Files
'Write all files to output files
For Each ObjFile In ObjFiles
ResultLogFile.WriteLine(ObjFile.Name & vbTab & ObjFile.Path & vbTab & ObjFile.DateLastModified)
Next
'Getting all subfolders
Set ObjSubFolders = ObjFolder.SubFolders
For Each ObjFolder In ObjSubFolders
'Writing SubFolder Name and Path
ResultLogFile.WriteLine(ObjFolder.Name & vbab & ObjFolder.Path)
'Getting all Files from subfolder
GetFiles(ObjFolder.Path)
Next
End Function