Single Post |
Topic: Создание списка файлов выборочно по расширениям |
Author |
Message |
LonerD

|
Posted: Sun Aug 26, 2012 21:48 Post subject: |
|
|
Tol!k
Спасибо.
Немного модифицировал скрипт, сделал его более универсальным и многовариантым.
Запостю и здесь, может кому ещё пригодится.
Code: | '================================================================
' Create Filelist
' Створення списку файлів
' Создание списка файлов
'================================================================
' Parameters / Параметры / Параметри:
' 1: {files or directory}/{файли або каталог}/{файлы или каталог}
' 2: {filelist}/{підсумковий файл-список}/{итоговый файл-список}
' 3: {recursive path | 1 or 0}
' {рекурсивний список (включаючи підкаталоги) | 1 або 0}
' {рекурсивный список (включая подкаталоги) | 1 или 0}
' 4: {relative path | 1 or 0}
' {відносні шляхи | 1 або 0}
' {относительные пути | 1 или 0}
' 5: {new filelist each time | 1 or 0}
' {новий список кожного разу | 1 або 0}
' {новый список каждый раз | 1 или 0}
'================================================================
' Якщо перший параметр - шлях до каталогу, то обробляється
' тільки цей каталог, при цьому він вважається активним.
' Если первый параметр - путь к каталогу, то обрабатывается
' только этот каталог, причём он считается активным.
'================================================================
' Якщо для параметра {файл-список} не вказано повний шлях,
' то файл-список створюється в активному каталозі.
' Если для параметра {файл-список} не указан полный путь,
' то файл-список создаётся в активном каталоге.
'================================================================
' При рекурсивній обробці (третій параметр = 1) обробляються
' також всі файли і підкаталоги виділених каталогів.
' При рекурсивной обработке (третий параметр = 1) обрабатываются
' также все файлы и подкаталоги выделенных каталогов.
'================================================================
' При релятивній обробці (четвертий параметр = 1) шляхи до файлів
' в списку файлів вказуються відносно активного каталогу.
' При рекурсивной обработке (четвёртый параметр = 1) пути к файлам
' в списке файлов указываются относительно активного каталога.
'================================================================
' Якщо п'ятий параметр дорівнює 0, то підсумковий файл-список
' буде перезаписуватись; якщо 1 - створюватися новий
' Если пятый параметр равен 0, то итоговый файл-список
' будет перезаписываться; если 1 - создаваться новый
'================================================================
' У функції CreateTextFile третій параметр відповідає за кодування
' створюємого файлу: True - Unicode, False - ASCII.
' В функции CreateTextFile третий параметр отвечает за кодировку
' создаваемого файла: True - Unicode, False - ASCII.
'================================================================
' Examples / Приклади / Примеры:
' %L "c:\path\Filelist.lst" 1 1 1
' %P%N Filelist.lst 0 0 0
'================================================================
' Script: FileListDreamLair.vbs
' Author: Batya & LonerD
' Build: 1.4 (2012.08.27)
' OfSite: http://dreamlair.net
'================================================================
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
Cnt = WScript.Arguments.Count
If Cnt < 4 Then Wscript.Quit
With WScript.Arguments
FF = .Item(0) : TargetList = .Item(1) : Recursive = .Item(2) : Relative = .Item(3) : NewFile = .Item(4)
End With
FolderMode = FSO.FolderExists(FF)
If FolderMode Then
CurrentFolder = FF
Else
CurrentFolder = CreateObject("WScript.Shell").CurrentDirectory
End If
If Right(CurrentFolder, 1) <> "\" Then CurrentFolder = CurrentFolder & "\"
LenCF = Len(CurrentFolder)
If InStr(TargetList, ":") = 0 Then TargetList = CurrentFolder & TargetList
If FolderMode Then
List = Process(CurrentFolder)
Else
With FSO.OpenTextFile(FF, 1)
Do While Not .AtEndOfStream
F = .ReadLine : List = List & Process(F)
Loop
End With
End If
If NewFile = 1 Then TargetList = NextName(TargetList)
FSO.CreateTextFile(TargetList, True, True).Write List
Set FSO = Nothing : Wscript.Quit()
Function Process(pPath)
If FSO.FileExists(pPath) Then Process = Cut(pPath) & vbNewLine
If FSO.FolderExists(pPath) Then
If Recursive = 0 Then
Process = Cut(pPath) & vbNewLine
Else
For Each lF in FSO.GetFolder(pPath).Files
Process = Process & Cut(lF) & vbNewLine
Next
For Each lF in FSO.GetFolder(pPath).SubFolders
Process = Process & Process(lF)
Next
End If
End If
End Function
Function Cut(pPath)
Cut = FSO.GetAbsolutePathName(pPath)
If Relative = 1 Then Cut = Mid(Cut, LenCF + 1)
End Function
Function NextName(pFilePath)
Const lQ = 2 'Мінімальна кількість цифр в номері
With CreateObject("Scripting.FileSystemObject")
lPath = .GetParentFolderName(pFilePath)
If lPath <> "" Then lPath = lPath & "\"
lName = .GetBaseName(pFilePath)
lExt = .GetExtensionName(pFilePath)
NextName = lPath & lName & lAdd & "." & lExt
Do While .FileExists(NextName)
li = li + 1
If li < 10^lQ Then
lAdd = Right(String(lQ, "0") & li, lQ)
Else
lAdd = li
End If
NextName = lPath & lName & "_" & lAdd & "." & lExt
Loop
End With
End Function
'================================================================ |
Добавлено.
Скрипт слегка оптимизирован, спасибо Batya за советы. |
|
|
|
 |
|
Powered by phpBB © 2001, 2005 phpBB Group
|