Страница 3 из 4

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

Добавлено: Вс сен 13, 2015 10:30
Totas
Маскa для имени файла ..\[N] перемещает файлы на 1 уровень вверх независимо от глубины подпапки. А если я хочу переместить на 2 уровня (этажа) вверх, тогда как?

Добавлено: Вс сен 13, 2015 10:32
Staniclaw
Totas
Надо полагать, ..\..\[N].

Добавлено: Вс сен 13, 2015 10:41
Avada
Staniclaw
Да, разумеется.

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

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

Добавлено: Пн янв 23, 2017 15:24
Totas
Имеется множество альбомов, которые находятся в подпапках (т.е. папка в папке). Нужно их переместить на 1 уровень вверх (поскольку названия у них идентичные, в моем случае подпапка заменит главную папку). Однако в главном окне программы я не смог найти Выделить только подкаталоги. ТС либо показывает все файлы подряд во всех каталогах либо только главные (родительские, как их называют) папки. Как выделить и переместить вторые папки (подкаталоги) на один уровень вверх?

Добавлено: Пн янв 23, 2017 16:04
Flasher
Totas
Можно сперва найти файлы по глубине вложенности. Выбираем "Число уровней:1", отмечаем атрибут "Каталог".
Далее "Поиск с плагинами": filex | Глубина вложенности | = | 4
Т.е. C:\1\2:<активная папка>\3\4. Находим > Ctrl+A. После - по разобранной выше схеме.

Добавлено: Пн янв 23, 2017 16:49
sa
Flasher писал(а):Выбираем "Число уровней:1",
Не лишнее действие?

Добавлено: Пн янв 23, 2017 16:50
Flasher
Для ускорения поиска, думаю, нет.

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

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

Добавлено: Вт ноя 20, 2018 15:47
BeardFury78
Есть папки, которые содержат только одну папку и её нужно переместить наверх (с объединением папок, если подпапка содержит то же название родительской папки). Как сделать? Игнорируя папки, которые содержат больше одной папки, а также файлы.

Добавлено: Вт ноя 20, 2018 16:09
Вахмурка
Я был бы не я, если бы не сунул сюда пятак в виде скрипта для PowerPro...

Добавлено: Вт ноя 20, 2018 16:12
Flasher
Вахмурка
Ты был бы не ты, если бы знал, что есть тема.

Добавлено: Вт ноя 20, 2018 16:20
BeardFury78
Вахмурка
PowerPro нету. А ставить ради одной задачи не хочется. Извините.
Flasher
Насколько я понял, описание темы не совпадает с тем, что я прошу.

Добавлено: Вт ноя 20, 2018 16:23
Вахмурка
BeardFury78 писал(а):PowerPro нету. А ставить ради одной задачи не хочется. Извините
Нет проблем. Наше дело - предложить.

Добавлено: Вт ноя 20, 2018 18:25
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

Добавлено: Вт ноя 20, 2018 21:19
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\
Дополнение к просьбе: если родительская и дочерная папки содержат разные названия, то дочерную папку переместить вверх, а родительскую (уже пустую) - удалить.