Удаление папок по совпадению имен
Здравствуйте, уважаемые.
Прошу помочь. Нужен батник, который удаляет в нескольких заранее определенных директориях только те папки, чьи имена совпадают с именами папок, выделенных в Проводнике в произвольной директории. Пути к директориям, где требуется производить удаления, указываются в батнике. Их может быть несколько, обычно менее десяти. Сам батник будет добавлен в контекстное меню Проводника, откуда и будет запускаться. Произвольной директорией, где выделяются папки и запускается батник, может быть и одна из указанных в батнике директорий. Пример
Есть три директории: C:\Folder1 C:\Folder2 C:\Folder3\Subfolder Первая - произвольная, из которой будет вызываться батник через контекстное меню Проводника. Вторая и третья - заранее определенные, в которых требуется производить удаления. Пути к ним прописываются в батник через set. В Проводнике в первой (произвольной) директории C:\Folder1 выделяем мышью-клавиатурой несколько интересующих папок: C:\Folder1\Март C:\Folder1\Август C:\Folder1\Сентябрь C:\Folder1\Октябрь C:\Folder1\Декабрь Вызываем контекстное меню Проводника, и активируем через него батник. (его путь и параметр добавлены в контекстное меню). Батник ищет во второй и третьей директориях папки, имена которых совпадают с именами папок, выделенных в первой директории - Март, Август, Сентябрь, Октябрь, Декабрь - и удаляет их. Например, нашел и удалил: C:\Folder2\Март C:\Folder2\Октябрь C:\Folder2\Декабрь C:\Folder3\Subfolder\Март C:\Folder3\Subfolder\Август C:\Folder3\Subfolder\Сентябрь C:\Folder3\Subfolder\Октябрь |
Хотите сказать это удобно, именно так? Насколько часто надо делать это удаление? Может проще задать пути параметром или вопросом и поручить планировщику задачу?
И для чего вообще возиться с подпапками, не проще сразу удалять все пустые ниже или на этом уровне или непустые но начиная с родительской известной? |
Цитата:
Цитата:
Цитата:
Цитата:
Родительские папки содержат массу непустых подпапок, в которых тоже что-то находится. Удалять родительские папки нельзя. А также, нельзя (даже временно) переименовывать и перемещать подпапки. Можно только удалить некоторые из них. Но при этом, если в одной родительской директории одна какая-то папка удаляется, то обязательно удалять ВСЕ подпапки с тем же названием и в других родительских директориях. Если они там есть. |
NuclearBox, так как вы хотите (из контекстного меню выделять) не выйдет, можно выделенное передать в файл-список и потом придется еще запускать bat где будет сравнение содержимого заданных путей с этим списком. Иначе, если выделенное отдать сразу параметром для bat (прописать в конт. меню), то будет запускаться столько окон bat, сколько путей было выделено.
Я не просто так написал выше, что это будет неудобно так как вы хотите. |
alpap, спасибо за ответ.
Цитата:
По текущей задаче, при 10-15 наименований под удаление в день, которые редко удаляются сразу все, а обычно за 2-3 раза в течение дня - это нормально. Даже если бы пришлось по одному названию удалять, а не скакать между окнами с поиском - уже было бы легче. Но целесообразно сразу сделать удаление пакетами (несколькими bat-окнами) - машину это не напряжет. Цитата:
Как примерно представлял себе конструкцию батника: 1 - задать через set пути к родительским папкам, где нужны удаления. Согласно примеру: Set "FolderA=C:\Folder2" Set "FolderB=C:\Folder3\Subfolder" 2 - для выделенных папок (for) прописать через do set замену путей каждой папки на путь вида "FolderA\папка", и через call отправить на удаление этого пути. 3 - аналогично, для выделенных папок прописать замену пути каждой папки на путь вида "FolderB\папка", и отправить на удаление. 4 - удаление выделить с помощью метки. alpap, однако, если я ошибаюсь, и такая конструкция неработоспособна, то можно было бы основным батником не просто генерировать пути для списка удаления, а формировать строки нового временного батника, состоящие из команды удаления и сгенерированных путей, и выводить в новый батник >> temp.bat По примеру такого вида: call del "C:\Folder2\Март" call del "C:\Folder2\Октябрь" call del "C:\Folder2\Декабрь" call del "C:\Folder3\Subfolder\Март" call del "C:\Folder3\Subfolder\Август" call del "C:\Folder3\Subfolder\Сентябрь" call del "C:\Folder3\Subfolder\Октябрь" Это решит проблему нагрузки и количества окон bat, и сюда же можно дописать удаление этого временного батника: call del "temp.bat" Хотелось бы обойтись одним постояным bat-файлом. Однако, навыков все равно не хватает ни для первого, ни для второго варианта. |
ну если несколько окон устраивает, то можно сделать так:
применить этот reg Скрытый текст
Код:
Windows Registry Editor Version 5.00 Remsim.reg ------------------------------------------- Remsim.bat (у меня лежал в "C:\Bat") Код:
@echo off 1, 2, 3 |
alpap, большое спасибо! Это то, что надо! Даже reg и иллюстрации бонусом)
Легко увеличил количество папок до нужного. Отлично работает! Спасибо! |
Время: 05:16. |
Время: 05:16.
© OSzone.net 2001-