Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

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



PostPosted: Mon Jan 24, 2011 17:48    Post subject: Reply with quote

Jonmey wrote:
И что тут непонятного?

В данном случае всё понятно, но ещё раз прошу обратить внимание, что обсуждение твоей задачи в теме "Создание списка файлов выборочно по расширениям" по сути является оффтопом.
Во избежание ненужных дискуссий, решение твоей задачи в виде vbs-скрипта:
Code:
'=====================================================================
' Создание списка файлов относительно текущей папки

' Параметры:
' {исходный файл-список|папка} {требуемый файл-список}
' Если первым параметром передан путь к папке, то
'   обрабатываеются только эта папка, причём она считается текущей.
' Если для параметра {требуемый файл-список} указан не полный путь, то
'   файл-список создаётся в текущей папке.

' Примеры параметров при вызове из TC:
' %L "C:\Путь\Файл-список.txt"
' %P%N "Файл-список.txt"
'=====================================================================

Dim FSO, FolderMode, FF, F, List, CurrentFolder, TargetList, LenCF
Set FSO = CreateObject("Scripting.FileSystemObject")

FF         = WScript.Arguments(0)
TargetList = WScript.Arguments(1)
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

FSO.CreateTextFile(TargetList, True, True).Write List

Set FSO = Nothing
Wscript.Quit()

Function Process(pPath)
  Dim lF
  If FSO.FileExists(pPath) Then Process = Cut(pPath)
  If FSO.FolderExists(pPath) Then
    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 Function

Function Cut(pPath)
  Cut = Mid(pPath, LenCF + 1)
End Function

Внимание! У кнопки\команды параметр "Путь запуска" должен быть пустой.
_________________
Нет, я не сплю. Я просто медленно моргаю.


Last edited by Batya on Tue Jan 25, 2011 13:30; edited 1 time in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group