Batya

|
Posted: Mon Jan 24, 2011 17:48 Post subject: |
|
|
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 |
|