Воспроизведение полной структуры корневой папки

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Ответить
Аватара пользователя
shveicar
Сообщения: 277
Зарегистрирован: Пн апр 18, 2011 01:54
Откуда: Россия Москва

Воспроизведение полной структуры корневой папки

Сообщение shveicar »

Здравствуйте.
Хочу проконсультироваться.
Есть такой скрипт или второй (не создающий множества черных окон, при работе) вариант
Меня интересует, возможность обратного варианта, - то есть, создание полной структуры, со всеми вложенными файлами нулевого размера и исходными расширениями, - указанными в текстовом файле с полными путями.
Поясню, для чего это нужно:
при совместной разработке сайтов, создание структурных баз, иногда для обмена информацией, особенно если структура большая - удобно пересылать такие вот контейнеры (минимального размера, но с наглядной структурой) или даже просто, (при условии найденного решения) текстовые файлы, с полной структурой главного каталога, с возможностью последующего воссоздания.
Кроме того, иногда при обработке сайта, удобно сначала воспроизвести полностью его структуру, а затем уже, постепенно её заполнить нормальными файлами, далее при проверке, можно сразу найти файлы нулевого размера и устранить "пробелы".
Спасибо.
Последний раз редактировалось shveicar Вт май 08, 2012 23:10, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

shveicar писал(а):Меня интересует, возможность обратного варианта
А где тут обратный вариант? Задача вроде бы аналогичная, только вместо %L пишется путь к списку.
Аватара пользователя
shveicar
Сообщения: 277
Зарегистрирован: Пн апр 18, 2011 01:54
Откуда: Россия Москва

Сообщение shveicar »

Задача вроде бы аналогичная, только вместо %L пишется путь к списку
Да это работает, (но с первым скриптом) только структура становиться другой, не такой как в файле списке. Да это ведь легко проверяется, берем структуру, создаем файл список, и в новой папке воспроизводим, - результаты разные. Для создания файла списка, использую копку

Код: Выделить всё

TOTALCMD#BAR#DATA
%ComSpec%
/c type "%L" >"%T\1filelist.txt"
%COMMANDER_PATH%\ico\74.ico
Список файлов в противоположной панели(полный путь)

1
-1
Или у Вас другой результат?
Последний раз редактировалось shveicar Вт май 08, 2012 23:11, всего редактировалось 1 раз.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Для создания файла списка, использую копку
...
type "%L" >"%T\1filelist.txt"
это список выделенного, а не полная структура.
Ищи другую кнопку, напр. в http://forum.wincmd.ru/viewtopic.php?t=13736
Аватара пользователя
shveicar
Сообщения: 277
Зарегистрирован: Пн апр 18, 2011 01:54
Откуда: Россия Москва

Сообщение shveicar »

Tol!k писал(а):это список выделенного, а не полная структура
Позвольте возразить, если перед созданием файла списка с помощью этой кнопки, через поиск отобразить все, то создается самый подробнейшей список, со всеми каталогами и файлами. Другое дело, что после воссоздания из этого файла списка, - появляются лишние файлы, которые приходиться удалять в ручную.
Непонятно, откуда они берутся, если в путях файла списка, в таком ракурсе - их нет.

Код: Выделить всё

G:\3\12_mesjatsev\
G:\3\aibolit\
G:\3\alenk_tsvetochek1\
G:\3\12_mesjatsev\12_masjatsev1.jpg
G:\3\12_mesjatsev\12_mesjatsev.htm
G:\3\12_mesjatsev\12_mesjatsev.swf
G:\3\12_mesjatsev\12_mesjatsev02.htm
G:\3\12_mesjatsev\12_mesjatsev02.swf
G:\3\aibolit\aibolit.htm
G:\3\aibolit\aibolit.jpg
G:\3\aibolit\aibolit.swf
G:\3\alenk_tsvetochek1\alenk_tsvetochek1.htm
G:\3\alenk_tsvetochek1\alenk_tsvetochek1.swf
G:\3\alenk_tsvetochek1\alenk_tsvetochek3.htm
G:\3\alenk_tsvetochek1\alenk_tsvetochek4.htm
G:\3\alenk_tsvetochek1\alenki_tsvetochek.jpg
G:\3\alenk_tsvetochek1\alenki_tsvetochek2.jpg
G:\3\alenk_tsvetochek1\alenki_tsvetochek3.jpg
G:\3\alenk_tsvetochek1\alenki_tsvetochek4.jpg
Вот простой пример списка из трех каталогов, в каждый из которых,- вложены файлы.
А вот исходная структура оригинал и результат (после воспроизведения).
Возможно дело в самом скрипте, и как избавиться от необходимости каждый раз, указывать в параметрах новый путь к списку,
то есть, - сделать так, чтобы работала схема - файла списка под курсором?
Буду признателен за помощь, - ответов пока не нашёл,
Спасибо.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

shveicar писал(а):не создающий множества черных окон, при работе
Если почитать концовку темы с первым скриптом, то там всё тоже элементарно решается без всяких чёрных окон.
shveicar писал(а):с полной структурой главного каталога
Что есть главный каталог? Корень диска?
shveicar писал(а):Да это ведь легко проверяется, берем структуру, создаем файл список, и в новой папке воспроизводим, - результаты разные.
В первом скрипте обрабатывается каталог списка и его вложения с воспроизведением структуры относительно рабочего каталога.
shveicar писал(а):/c type "%L" >"%T[s]\[/s]1filelist.txt"
Кр. - лишнее.
Аватара пользователя
shveicar
Сообщения: 277
Зарегистрирован: Пн апр 18, 2011 01:54
Откуда: Россия Москва

Сообщение shveicar »

Здравствуйте.
Flasher писал(а):Если почитать концовку темы с первым скриптом
Согласен, - способ действительно помог.
Что есть главный каталог?
В моем понимании главный каталог - тот в котором находятся все нужные папки.
Проблема первого скрипта в том, что он не всегда срабатывает, - в отличие от второго. До внесения в него изменений,- наблюдалось тоже самое. То есть несколько раз скрипт выполнялся, а затем просто переставал работать. Пока так и не понял с чем это связанно.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

shveicar писал(а):До внесения в него изменений,- наблюдалось тоже самое.
А после внесений?
shveicar писал(а):То есть несколько раз скрипт выполнялся, а затем просто переставал работать.
Речь идёт о выделенной папке или файле-списке? Если файле, то, возможно, проблемы в самом файле, например, в его кодировке.
Аватара пользователя
shveicar
Сообщения: 277
Зарегистрирован: Пн апр 18, 2011 01:54
Откуда: Россия Москва

Сообщение shveicar »

Здравствуйте, наконец проблема решена (Спасибо Andrey_A)
Работает как часы.

Код: Выделить всё

' CreateStructureFileList.vbs
'========================   Описание   ============================
' Создание пустой структуры из файл списка
'=======================   Параметры  ============================
' 1-й параметр: список файлов\папок
' 2-й параметр: куда\сохранять\пустую\структуру
'========================   Примеры   ============================
' %P%N %t    - создание структуры из списка под курсором
' "Путь\к\списку.txt" %p
' %L %t - создание структуры выделенного

' Автор:             Аверин Андрей
' Версия:          1.1 (08.06.2012)
' Mail:                 Averin-And@yandex.ru
' Site:                  http://tc-image.3dn.ru/forum/3-496-2034-16-1339174881
'===============================================================
Set FSO = CreateObject("Scripting.FileSystemObject")
With WScript
   Cnt = .Arguments.Count
   If Cnt > 0 Then
     Set tFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
     If Cnt > 1 Then
       tPath = .Arguments(1) : If Not FSO.FolderExists(tPath) Then .Quit
       If Right(tPath,1) = "\" Then : tPath = Left(tPath, Len(tPath) - 1)
     End If
   End If
End With

Do While Not tFile.AtEndOfStream
   Line = tFile.ReadLine : n = InStr(Line, ":\")
   If n > 0 Then Line = Mid(Line, 4)
   NewPath = tPath & "\" & Line
   CreateFolderInPath(NewPath)
   If Not FSO.FolderExists(NewPath) Then FSO.CreateTextFile(NewPath)
Loop
CreateObject("WScript.Shell").Popup "Структура успешно создана!", 1, "Структура", 64
Set FSO = Nothing : Set tFile = Nothing : WScript.Quit

Sub CreateFolderInPath(FF)
   With CreateObject("Scripting.FileSystemObject")
     If InStr(FF, "%") > 0 Then FF = GetPath(FF)
     If Len(.GetExtensionName(FF)) > 0 Then FF = .GetParentFolderName(FF)
     If Not .FolderExists(FF) Then
       Drive = .GetDriveName(FF)
       If .DriveExists(Drive) Then
         F = Split(FF, "\") : FL = Drive
         For cr = 1 To Ubound(F)
           FL = FL & "\" & F(cr) : If Not .FolderExists(FL) Then Call .CreateFolder(FL)
         Next
       End If
     End If
   End With
End Sub
Возможно кому-то пригодиться
Спасибо.
Ответить