' DiskDir ' Version: 1.0 ' Autor: mozers™ ' ------------------------------------------------ ' Создает файловые списки в формате DKT (аналогично плагину DiskDir в Total Commander) ' Пример запуска: ' cscript DiskDir.vbs "C:\Programm Files" - создает Programm Files.dkt ' cscript DiskDir.vbs @C:\TEMP\filders.txt MyFavoriteFolders - создает MyFavoriteFolders.dkt, включающий все каталоги, перечисленные в списке filders.txt ' ------------------------------------------------ Option Explicit Dim WshShell, FSO, SciTE Set WshShell = CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Const ForReading = 1, ForWriting = 2, ForAppending = 8 Set SciTE = CreateObject("SciTE.Helper")Dim FSO, WSH Dim MainFolder Const ForReading = 1, ForWriting = 2, ForAppending = 8 Set WSH = CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Set objArgs = WScript.Arguments If objArgs.Count <> 2 Then WScript.Echo "DiskDir" WScript.Echo "> cscript DiskDir.vbs FolderName|@ListFolderName DiskDirFileName" WScript.Quit End If out_filename = objArgs(1) Set out_file = fso.OpenTextFile(out_filename, ForWriting, True) arg = objArgs(0) If Left(arg,1)="@" Then arg = Right(arg,Len(arg)-1) If Not FSO.FileExists(arg) Then WScript.Echo "Folderlist """ & arg & """ Not Exists!" WScript.Quit End If WScript.Echo "> Processing..." Set list_file = fso.OpenTextFile(arg, ForReading) Do While Not list_file.AtEndOfStream MainFolder_path = list_file.ReadLine DirMainFolder(MainFolder_path) Loop list_file.Close Else WScript.Echo "> Processing..." DirMainFolder(arg) End If out_file.Close WScript.Echo "File """ & out_filename & """ create!" WScript.Quit Sub DirMainFolder(FolderName) If FSO.FolderExists(FolderName) Then WScript.Echo FolderName Set MainFolder = FSO.GetFolder(FolderName) out_file.WriteLine FolderName & vbTab & "0" & vbTab & GetDateTime(MainFolder) DirWithSubFolders MainFolder End If End Sub Sub DirWithSubFolders(ByVal AFolder) Dim MoreFolders, OneFolder EnumerateFiles AFolder Set MoreFolders = AFolder.SubFolders For Each OneFolder In MoreFolders folder_path = OneFolder.Path out_file.WriteLine Right(folder_path, Len(folder_path) - i) & "\" & vbTab & "0" & vbTab & GetDateTime(OneFolder) DirWithSubFolders OneFolder Next End Sub Sub EnumerateFiles(AFolder) Dim AFile, TheFiles ' On Error Resume Next Set TheFiles = AFolder.Files For Each AFile In TheFiles out_file.WriteLine AFile.Path & vbTab & AFile.Size & vbTab & GetDateTime(AFile) Next End Sub Function GetDateTime(obj) date_time = obj.DateLastModified Set regEx = New RegExp regEx.Pattern = "[0]?(\d+)[.][0]?(\d+)[.](\d{4})[ ]?[0]?(\d+)[:]?[0]?(\d+)[:]?(\d*)" date_time = regEx.Replace(date_time, "$3.$2.$1" & vbTab & "$4:$5.$6") regEx.Pattern = "[0]?(\d+)[.][0]?(\d+)[.](\d{4})" GetDateTime = regEx.Replace(date_time, "$3.$2.$1" & vbTab & "0:0.0") End Function |