View previous topic :: View next topic |
Author |
Message |
iverru
Joined: 25 Nov 2013 Posts: 3
|
(Separately) Posted: Mon Nov 25, 2013 17:12 Post subject: Список файлов с подкаталогами и проблема с иероглифами |
|
|
Доброго времени суток.
Так уж случилось, что для создания списков файлов с подкаталогами я использую плагин CatalogMaker. Он сохраняет древовидные списки каталогов с файлами, а справа - их атрибуты, выстроенные по одной вертикали. Всё очень удобно и наглядна. Тишь да благодать.
Проблемы начались, когда в именах моих файлов с папками начали появляться спецсимволы и иероглифы. Если плагин находит такой, то весь процесс встаёт, а мне приходит предупреждение о том, что "имя файла содержит символы, которые не поддерживаются целевой платформой". Остаётся лишь пропустить всё подобное и в итоге список оказывается неполным. И, как мне показалось, проблема не в конкретном плагине, ибо другие писатели списков типа DiskDir показали ту же самую ошибку.
В чём дело и можно ли мне как-то помочь записать в списки файлов и папок специальные символы? Если нет, то существует ли на свете какой-нибудь похожий на CatalogMaker сторонний софт?
Добавлено спустя 58 секунд:
Система - Win 8.1. Версия TC - 8.01. |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
|
Back to top |
|
 |
iverru
Joined: 25 Nov 2013 Posts: 3
|
(Separately) Posted: Mon Nov 25, 2013 19:00 Post subject: |
|
|
Вот поиск по форуму как раз и давал те самые темы, что вы представили мне тут. Только они не работают в моём случае, ибо мне именно CatalogMaker нужен с его типом построения списка. DiskDir всё сваливает в кашу. Скрипты тоже не совсем то что нужно делают.
Ну, я в-принципе понял. CatalogMaker с юникодом нет. Может, тогда есть что другое, способное на подобную структуру описи?
rghost.ru/50442602 |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Nov 26, 2013 01:25 Post subject: |
|
|
iverru
Понимается, что если есть подходящая тема, то в неё и логично писать. По 3-й ссылке как раз решалось похожее.
Файл выкладывать не нужно. Есть спойлер.
А не лучше сразу в xls?
И ещё: так принципиально именно в такой последовательности?: "Имя размер дата время". С чем связана такая необходимость? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
iverru
Joined: 25 Nov 2013 Posts: 3
|
(Separately) Posted: Tue Nov 26, 2013 11:37 Post subject: |
|
|
Как раз подходящей темы не было. Я довольно долго пробивал гугл на предмет решения именно моей проблемы. До того, чтобы написать сюда я уже не раз видел приведённые выше темы по представленным ссылкам. Но конкретно в моём случае они помочь не могли.
Я ещё раз повторюсь, что мне нужно было решение, связанное именно с CatalogMaker. Потому, что только у него есть отличающий от других принцип выстраивания дерева каталогов-файлов и информации к ним. Мне не нужна чёткая последовательность "имя-размер-дата-время", я никогда не говорил о таком. Мне нужен сам принцип выстраивания списка, когда каталоги и файлы слева (разделёнными друг от друга отступами), а атрибуты файлов - справа. Справа, расположенные по одной вертикали. В этом случае глазам не приходится прыгать от одного края к другому, все атрибуты читаются как чёткие столбики.
Остальные решения данные атрибуты помещают либо через несколько пробелов после имени файла, либо под ним. В результате получается совершенно нечитабельная каша.
Конкретно мне приоритетнее, конечно, текстовик. Но если есть возможность устроить xls, то буду только благодарен. Деваться, как я вижу, всё равно некуда. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Nov 26, 2013 14:29 Post subject: |
|
|
Ладно, позже скрипт сделаю.
2moder's: Перенесите в Автоматизацию. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6192 Location: Москва
|
(Separately) Posted: Wed Nov 27, 2013 18:47 Post subject: |
|
|
Перенёс. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Dec 10, 2013 00:46 Post subject: |
|
|
iverru
Вроде что-то сделал, но пока сырой вид (есть нодочёты, не все режимы грамотно отрабатывают). Могу выложить для тестов. Даже не знаю куда, сюда пока нет смысла, в личку что ли... _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Dec 25, 2013 08:13 Post subject: |
|
|
Поскольку топикстартер нигде не объявился, выложу то, что ранее получилось.
Прошу сообщить о результатах тестов тех, кто пользуется Catalog Maker и т. п.
 StructureListMakerScript.vbs Code: | '••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
' Создание списка со структурой выбранных в панели элементов
' Условия:
' 1) vbs-файл сохранить в Юникоде: UTF-16 LE c ВОМ или UTF-16 BE без ВОМ
' 2) путь запуска - пустой
' 3) выбрать для просмотра моноширинный шрифт
' например: Courier New, Lucida Console
' Параметры (! - обязательный):
' 1. <путь к списку элементов> (!)
' 2. "<путь назначения>\" (!) (если установить "", то - активный каталог);
' 3. <не/указывать размер файлов в байтах: 0/1> (!)
' 4. <не/указывать дату модификации файлов 0/1> (!)
' 5. <не/указывать время модификации файлов 0/1> (!)
' 6. <сортировать файлы по имени/размеру/дате и времени: 0/1/2> (!)
' 7. <сортировать файлы по возрастанию/убыванию: 0/1> (!)
' 8. <отступ - кол-во пробелов> (!)
' 9. <фильтр-список расширений файлов> разделитель - запятая
' 10. "<относительный путь к редактору для открытия файла>"
' Примеры:
' 1) %WL "" 1 1 0 1 0 3 jpg,jpeg,png,gif
' 2) %WL "%T" 1 1 1 2 1 2 "" "Utils\Akelpad\Akelpad.exe"
' Автор - Flasher ©
'••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
With WScript.Arguments
On Error Resume Next
List = .Item(0) : Path = .Item(1) : FSize = .Item(2) : FDate = .Item(3) : FTime = .Item(4)
FSort = .Item(5) : Rev = .Item(6) : Indent = .Item(7) : If .Count > 8 Then Filt = .Item(8)
If .Count > 9 Then Editor = .Item(9)
If Len(List) > 0 And .Count < 8 Then Errors "Не выполнено условие:" & vbnewline &_
"минимальное число параметров - 8", 16
If Err.Number > 0 Then Errors "Не выбраны элементы!", 5 : On Error goto 0
For Arg = 2 to 6 : If .Item(Arg) < 0 Or .Item(Arg) > 2 Then Nums = Nums & ", " & Arg + 1
Next : If Nums <> "" Then Errors "Для следующих параметров" & vbnewline &_
"значения не верны: " & Mid(Nums, 2), 17
End With : Summ = FSize + FDate + FTime : If FTime Then FDate = 1
Sub Errors(Desc, SCount)
MsgBox Desc, vbExclamation, Space(SCount) & "Создание списка элементов" : Wscript.Quit
End Sub
Select Case FSort
Case 1 Sort = "FSize" : Case 2 Sort = "FDate"
End Select : If Rev Then Sort = Sort & " DESC" : If Summ = 0 Then Sort = "Name"
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim WSH : Set WSH = CreateObject("WScript.Shell")
Set Coll = CreateObject("Scripting.Dictionary")
Set Dict = CreateObject("ADODB.Recordset")
CD = WSH.CurrentDirectory : TrgDepth = UBound(Split(CD, "\"))
Coll.Add 1, 0 : SetLocale(1049) : Dict.Fields.Append "Name", 200, 255
If FSize Then _
Sz = " Размер в байтах" : SpSz = " " & String(15, "¯") : Dict.Fields.Append "FSize", 139, 15
If FDate Then _
FD = " Дата" : SpFD = " " & String(10, "¯") : Dict.Fields.Append "FDate", 135, 22
If FTime Then FT = Space(8) & "Время" : SpFT = " " & String(8, "¯") : Dict.Open
Mass = Split(FSO.GetFile(List).OpenAsTextStream(1,-1).ReadAll, vbNewLine)
Last = Mass(Ubound(Mass) - 1)
For Each F in Mass
If Trim(F) > vbNullString Then
If FSO.FolderExists(F) Then ForFolder FSO.GetFolder(F), SS Else Indent = 0 : ForFile F, SS, 1
End If
Next : Count = Coll.Item(1) : If Count < 15 Then Count = 15
If Count > 15 Then Spc = Space(Count - 15)
For Each St in Split(SS, vbCr)
Sr = "" : St1 = "" : T2 = "" : Sr1 = "" : St2 = "" : T1 = InStr(St, vbTab)
If T1 Then
Sr = Left(St, T1 - 1) : St1 = Mid(St, T1 + 1) : T2 = InStr(St1, vbTab)
If FSize Then St = Sr & Space(Count - Len(Sr) + 3) & St1
If FDate Then
If FSize Then
Sr1 = Left(St1, T2 - 1) : St2 = Mid(St1, T2 + 1)
St = Sr & Space(Count - Len(Sr) + 3) & Sr1 & Space(18-Len(Sr1)) & DateValue(St2)
Else St = Sr & Space(Count - Len(Sr) + 3) & DateValue(St1) : End If
If FTime Then
If FSize Then TV = TimeValue(St2) Else TV = TimeValue(St1)
St = St & " " & TV
End If
End If
End If : Text = Text & vbCr & St
Next
If Text <> "" Then
If Right(Path, 1) <> "\" Then Path = Path & "\"
Name = FSO.GetFileName(CD) : If Name = "" Then Name = "Drive " & Left(CD, 1)
NewName = Path & Name & ".txt" : FN = NewName : n = 0 : Const M = 0
Do While FSO.FileExists(NewName)
n = n + 1 : If n < 10^M Then PFix = Right(String(M, "0") & n, M) Else PFix = n
NewName = Path & FSO.GetBaseName(FN) & " (" & PFix & ")." & FSO.GetExtensionName(FN)
Loop
FSO.OpenTextFile(NewName, 2, True, -1).Write "Имя папки/файла" & Spc & Sz & FD & FT &_
vbnewline & String(Count, "¯") & SpSz & SpFD & SpFT & Text
If Editor <> "" Then WSH.Exec "%COMMANDER_PATH%\" & Editor & " """ & NewName & """"
End If : Set FSO = Nothing : Set WSH = Nothing : Set Dict = Nothing
Set Coll = Nothing : WScript.Quit
Sub ForFolder(Folder, S)
Depth = UBound(Split(Folder.Path, "\")) - TrgDepth - 1
FName = Space(Depth*Indent) & Folder.Name & "\"
S = S & vbNewLine & FName : Length = Len(FName)
If Length > Coll.Item(1) Then Coll.Item(1) = Length
For Each Fl In Folder.SubFolders : ForFolder Fl, S : Next
Set Files = Folder.Files
Max = Files.Count
If Max Then
For Each Fl In Files
i = i + 1 : ForFile Fl, "", Depth
If i = Max And Dict.RecordCount Then
Cr = vbCr : Dict.Sort = Sort : If Right(S, 1) = vbCr Then Cr = ""
S = S & Cr & Dict.GetString : i = 0 : Dict.CancelBatch
End If
Next
End If
End Sub
Sub ForFile(File, S, FDepth)
If Filt <> "" Then
For Each Fi in Split(Filt,",")
If StrComp(Fi, FSO.GetExtensionName(File), 1) = 0 Then FileProc File, S, FDepth : Exit For
Next
Else FileProc File, S, FDepth : End If
If FSO.GetParentFolderName(File) = CD And File = Last Then
Dict.Sort = Sort : Cr = vbCr : If Right(S, 1) = vbCr Then Cr = ""
S = S & Cr & Dict.GetString : i = 0 : Dict.CancelBatch
End If
End Sub
Sub FileProc(FF, S, FlDepth)
Set A = FSO.GetFile(FF)
Str = Space(Indent + FlDepth*Indent) & A.Name : Length = Len(Str)
If Length > Coll.Item(1) Then Coll.Item(1) = Length
Dict.AddNew : Dict("Name") = Str
If FSize Then Dict("FSize") = CCur(A.Size)
If FDate Then Dict("FDate") = CStr(A.DateLastModified) : Dict.Update
End Sub |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Tue Dec 31, 2013 21:28; edited 1 time in total |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Dec 25, 2013 21:53 Post subject: |
|
|
Кое-что отлаживал и не заметил, что случайно не туда вставил кусок условия, из-за этого файлы не прописывались. Исправил. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Jan 01, 2014 19:14 Post subject: |
|
|
iverru wrote: | существует ли на свете какой-нибудь похожий на CatalogMaker сторонний софт? | Посмотрел Directory Lister Pro - вот монстр, выводит в UTF-8 (текст, HTML, CSV, базы данных) с различными необходимыми столбцами (общие, док-ты, мультимедиа и др.) в любой заданной последовательности, форматами дат, сортировкой, фильтрацией. В общем на любой вкус. Для тех, кому это реально полезно - вещь!  _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
camilajerry
Joined: 14 Oct 2014 Posts: 1
|
(Separately) Posted: Tue Oct 14, 2014 11:21 Post subject: |
|
|
С русскими папками и файлами не отрабатывает. Что надо поправить? _________________ camila |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Oct 14, 2014 15:30 Post subject: |
|
|
Должно всё работать в рамках Юникода. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|