View previous topic :: View next topic |
Author |
Message |
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Mon Aug 08, 2011 17:50 Post subject: |
|
|
Flasher wrote: | Остановлюсь, пожалуй, на одной дополнительной папке вместо относительного пути. Для создания вложенных цикл нужен, не хочу этим перегружать скрипт. |
Рекурсивная процедура:
Code: | 'Создание дерева папок
Sub CreateFoldersTree(pFolder)
Dim lParentFolder
If Not FSO.FolderExists(pFolder) Then
lParentFolder = FSO.GetParentFolderName(pFolder)
If Not FSO.FolderExists(lParentFolder) Then
CreateFoldersTree(lParentFolder)
End If
FSO.CreateFolder(pFolder)
End If
End Sub |
_________________ Нет, я не сплю. Я просто медленно моргаю.
Last edited by Batya on Mon Aug 08, 2011 17:57; edited 1 time in total |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Aug 08, 2011 17:57 Post subject: |
|
|
Да как делать понятно, просто не вижу вариантов, когда глубина может понадобиться. Одной папки, ИМХО, будет достаточно:
Code: | If InStr(P, ":") > 0 Then
Path = P
Else
PP = F1.ParentFolder & "\" & P
If FSO.FolderExists(PP) Then
Path = PP & "\"
Else Path = FSO.CreateFolder(PP) & "\"
End If
End If |
|
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Mon Aug 08, 2011 18:01 Post subject: |
|
|
Поправил предыдущий пост.
Кусок кода для любой глубины: Code: | If InStr(P, ":") > 0 Then
Path = P
Else
Path = F1.ParentFolder & "\" & P
End If
CreateFoldersTree Path
'...
'Создание дерева папок
Sub CreateFoldersTree(pFolder)
Dim lParentFolder
If Not FSO.FolderExists(pFolder) Then
lParentFolder = FSO.GetParentFolderName(pFolder)
If Not FSO.FolderExists(lParentFolder) Then
CreateFoldersTree(lParentFolder)
End If
FSO.CreateFolder(pFolder)
End If
End Sub |
При этом можно во втором параметре сразу задать ещё не существующий путь. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Aug 08, 2011 18:17 Post subject: |
|
|
Нет, ну сам подумай, пихать архивы на какую-то непонятную глубину - бред. А если в зоне одного каталога создавать одну папку, то лучше уж не для каждого файла производить запуск, а прописывать в одну строчку, как с Str здесь. |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Mon Aug 08, 2011 20:56 Post subject: |
|
|
..Да, жаркая разгорается дискуссия: но мне (и возможно, кому-то ещё), как "простому пользователю", важно чтобы скрипт не превратился в некую головоломку, или вариант конструктора - "сделай сам", а возможно, стал более удобным инструментом для работы с Total Commander, чем тот вариант, который он из себя представляет. И поэтому, есть просьба, - если скрипт будет меняться, и в нём появятся дополнительные опции(обсуждаемые ваше), предлагаю внесённые изменения отображать в виде "всплывающего окна". Например- перед запуском архивации появляется окно - вариант выбора при совпадении одинаковых имен в процессе архивации- ("имя"+буква+счетчик или "имя"+цифра+счетчик), и второе окно - если необходима архивация Batya wrote: | Например, я хочу, чтобы для каждого выделенного файла архив создавался в папке Arc рядом с файлом | для такого варианта: -Например введите 1 или 0. Просто это на мой взгляд будет удобнее, чем каждый раз "лесть" в код скрипта, и там что-то менять: особенно, если у него солидный размер. Надеюсь на понимание. Заранее благодарен.
Last edited by shveicar on Mon Aug 08, 2011 20:59; edited 1 time in total |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Aug 08, 2011 20:58 Post subject: |
|
|
shveicar
Волноваться нечему. Там всего один второй параметр, всё что заменится это 1 на "" либо на "имя папки". О правке кода я сам сообщу.
Добавлено: переименование по счётчику при совпадении полных имён.
Добавлено: новое условие для второго параметра - возможность создавать папку рядом с исходником и создавать в ней архив.
См. шапку скрипта. |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Tue Aug 09, 2011 15:17 Post subject: |
|
|
Flasher wrote: | Добавлено: переименование по счётчику при совпадении полных имён | Отлично работает, проблем нет. А вот с этим Flasher wrote: | Добавлено: новое условие для второго параметра - возможность создавать папку рядом с исходником и создавать в ней архив | Настоящие чудеса. - происходит следущее: Все архивы создаются внутри первой папки, причем вкладываются как "матрешки" одна в другую - получается множество вложенных (одна в другую) папок с архивами, боюсь, что если файлов много, может не хватить длинны путей. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Aug 09, 2011 15:23 Post subject: |
|
|
shveicar wrote: | Все архивы создаются внутри первой папки, причем вкладываются как "матрешки" одна в другую - получается множество вложенных (одна в другую) папок с архивами, боюсь, что если файлов много, может не хватить длинны путей. | Странно, не должно такого быть. Должно быть так: создаётся папка внутри каждой папки, и туда складываются только те архивы, файлы внутри которых были расположены в одном каталоге.
За длину в этом скрипте можно особо не беспокоится, т.к. идёт пофайловая упаковка, а не по строке-списку, как в скрипте параллельной темы.
Добавлено: Так, секундочку, в первой папке действительно матрёшка, что-то не замечал раньше, попробую выявить причину.
Добавлено спустя 48 минут:
В общем, логика понятна. Матрёшка создаётся, потому что пролистываются все папки в стуктруре, в т.ч. и только что созданные. Единственное, что пока приходит на ум - это ограничить эту возможность фильтром. Т.е. если фильтр в 4 параметре задан, и расширение файла не совпадает с расширением архива, то создавать папку, если нет, то паковать рядом. Сойдёт?
Если, конечно, у кого-то получше идеи не появится. |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Tue Aug 09, 2011 19:16 Post subject: |
|
|
А если ограничить глубину вложенности, уровнем1? а создаваемые папки будут иметь автонумерацию? хотя, тут совет от - Batya бы пригодился. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Aug 09, 2011 19:21 Post subject: |
|
|
shveicar wrote: | А если ограничить глубину вложенности, уровнем1? | Это не вариант для рекурсии.
shveicar wrote: | а создаваемые папки будут иметь автонумерацию? | Нет. Зачем? Я же выше объяснил, что должно происходить. |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Tue Aug 09, 2011 19:56 Post subject: |
|
|
Flasher wrote: | Т.е. если фильтр в 4 параметре задан, и расширение файла не совпадает с расширением архива, то создавать папку, если нет, то паковать рядом. Сойдёт? | Если я правильно понял -тогда, получается - что будет произведена упаковка, не для выбранных в фильтре файлов, а для всего содержимого вложенных папок (только по разному принципу)? а ведь это может быть не всегда удобно. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Aug 09, 2011 20:12 Post subject: |
|
|
Как это не для выбранных? Как раз только для выбранных.
Добавлено спустя 32 минуты:
Можно ещё сравнивать имя создаваемой папки и родительской, если не совпадают, то упаковывать. Только в таком случае в параметрах придётся писать имя, которое точно в структуре выбранных папок не окажется.
Подходит? |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Tue Aug 09, 2011 20:45 Post subject: |
|
|
Ну, тогда можно попробовать такой вариант, практика покажет.. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Aug 09, 2011 20:55 Post subject: |
|
|
Сделал и указал на это в описании параметра.
Хотя проблем с глубиной фактически нет. Не будут паковаться только выделенные архивы с указанным расширением и архивы на первом уровне выделенных папок, рядом с которыми уже есть папка (с указанным в параметрах именем) с одноимёнными архивами.
Add: Кое-что важное в строках 113-117 поправил. |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Wed Aug 10, 2011 15:15 Post subject: |
|
|
Еще раз проверил скрипт, недоразумений не нашел -все работает, Спасибо за проделанную работу. |
|
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
|