Перемещение файлов и папок на уровень вверх

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

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

Totas
Сообщения: 24
Зарегистрирован: Сб сен 05, 2015 07:54

Перемещение файлов и папок на уровень вверх

Сообщение Totas »

Маскa для имени файла ..\[N] перемещает файлы на 1 уровень вверх независимо от глубины подпапки. А если я хочу переместить на 2 уровня (этажа) вверх, тогда как?
Аватара пользователя
Staniclaw
Сообщения: 533
Зарегистрирован: Вс дек 12, 2010 15:37
Откуда: Ташкент

Сообщение Staniclaw »

Totas
Надо полагать, ..\..\[N].
Вечному двигателю -- вечные тормоза!..
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Staniclaw
Да, разумеется.

Totas
Ещё раз и больше ни разу. Здесь изначально обсуждается перемещение выделенных объектов на уровень вверх, а не любые варианты перемещения чего угодно куда угодно (их рассматривают в других местах). На свой исходный вопрос ответ вы получили, прекращайте захламлять тему.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Totas
Сообщения: 24
Зарегистрирован: Сб сен 05, 2015 07:54

Как выделить и переместить только подкаталоги?

Сообщение Totas »

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

Сообщение Flasher »

Totas
Можно сперва найти файлы по глубине вложенности. Выбираем "Число уровней:1", отмечаем атрибут "Каталог".
Далее "Поиск с плагинами": filex | Глубина вложенности | = | 4
Т.е. C:\1\2:<активная папка>\3\4. Находим > Ctrl+A. После - по разобранной выше схеме.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Выбираем "Число уровней:1",
Не лишнее действие?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Для ускорения поиска, думаю, нет.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

При перемещении файлов с одинаковыми именами (из разных подпапок) на уровень вверх с помощью маски ..\[N] получаю сообщение об ошибке - не удалось переименовать файлы, выделенные жирным шрифтом. Для версии 9.xx это не баг? Разве тотал не должен предложить Автоматически переименовывать в `name (2).ext`, `name (3).ext`…?

Решил вопрос конфликта имён обходным путём: сначала применил маску ..\[P]#[N] (чтобы конфликтов не было), затем, уже с маской [N], сделал замену *# на <Пусто>. Странно, что последняя операция вывела на запрос автопереименования только при условии выхода из диалога и повторном вызове команды. Попытка загрузить результаты переименования для следующего шага (F5) и выполнить указанную замену, не покидая диалог, приводила к пресловутому сообщению о невозможности переименования.
BeardFury78
Сообщения: 213
Зарегистрирован: Чт авг 25, 2016 05:24

Сообщение BeardFury78 »

Есть папки, которые содержат только одну папку и её нужно переместить наверх (с объединением папок, если подпапка содержит то же название родительской папки). Как сделать? Игнорируя папки, которые содержат больше одной папки, а также файлы.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Я был бы не я, если бы не сунул сюда пятак в виде скрипта для PowerPro...
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Вахмурка
Ты был бы не ты, если бы знал, что есть тема.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
BeardFury78
Сообщения: 213
Зарегистрирован: Чт авг 25, 2016 05:24

Сообщение BeardFury78 »

Вахмурка
PowerPro нету. А ставить ради одной задачи не хочется. Извините.
Flasher
Насколько я понял, описание темы не совпадает с тем, что я прошу.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

BeardFury78 писал(а):PowerPro нету. А ставить ради одной задачи не хочется. Извините
Нет проблем. Наше дело - предложить.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

BeardFury78
Там просто двойной уровень распаковки при выборе, например, одного родительского каталога.
Заодно можно наткнуться на рекомендацию по этому вопросу. Плюс я там же давал ссылку на 1 уровень.
BeardFury78 писал(а):Игнорируя папки, которые содержат больше одной папки, а также файлы.
Хотя для этого уточнения нужен свой вариант:

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

'============================ VBS ============================
' Переместить одиночные подпапки из выбранных папок в активную
' Условие:  путь запуска — пустой
' Параметр: %WF
'=============================================================
Set ShA = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Dir = ShA.NameSpace(FSO.GetAbsolutePathName(""))
Set List = FSO.OpenTextFile(WSH.Arguments(0),,,-1)
Do : F = List.ReadLine
  If Right(F, 1) = "" Then
    Set Items = ShA.NameSpace(Dir.Self.Path & "" & F).Items : Items.Filter 73952, "*"
    If Items.Count = 1 Then
      P = Items.Item(0).Path : Ch = Not FSO.FolderExists(FSO.GetFileName(P))
      If FSO.FolderExists(P) Then Dir.MoveHere Items, 5652 : If Ch Then FSO.GetFolder(F).Delete(1)
    End If
  Else List.Close :  WSH.Quit : End If
Loop Until List.AtEndOfStream : List.Close
Последний раз редактировалось Flasher Чт ноя 22, 2018 22:02, всего редактировалось 3 раза.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
BeardFury78
Сообщения: 213
Зарегистрирован: Чт авг 25, 2016 05:24

Сообщение BeardFury78 »

Flasher
Спасибо большое! Занес скрипт в свою коллекцию. Сейчас правда папки уже раскидал вручную, но обязательно, как появятся такие папки, протестирую на них и отпишусь потом.

Добавлено спустя 45 минут:

Только что протестировал. Части подпапок успешно переместились на уровень вверх, а некоторые - нет. Как я понял, дело в разных именах папок, а может в каких то символах. Вот пути проблемных подпапок для примера:
d:\Files\mods2\BetterPawnControl_v1.9.5\BetterPawnControl\
d:\Files\mods2\MarvsDisasters120_TEST_R1\MarvsDisasters\
d:\Files\mods2\MarvsPleaseHaulPerishables149_R1\MarvsPleaseHaulPerishables\
d:\Files\mods2\MarvsToxicWorld018_TEST_R1\MarvsToxicWorld\
d:\Files\mods2\PowerLogic18cR10-159-1-8c-1542716600\PowerLogic\
d:\Files\mods2\Rimfire_v2.5\Rimfire 2.5\
Дополнение к просьбе: если родительская и дочерная папки содержат разные названия, то дочерную папку переместить вверх, а родительскую (уже пустую) - удалить.
Ответить