|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление папок по совпадению имен |
|
CMD/BAT - [решено] Удаление папок по совпадению имен
|
Пользователь Сообщения: 59 |
Профиль | Отправить PM | Цитировать Здравствуйте, уважаемые.
Прошу помочь. Нужен батник, который удаляет в нескольких заранее определенных директориях только те папки, чьи имена совпадают с именами папок, выделенных в Проводнике в произвольной директории. Пути к директориям, где требуется производить удаления, указываются в батнике. Их может быть несколько, обычно менее десяти. Сам батник будет добавлен в контекстное меню Проводника, откуда и будет запускаться. Произвольной директорией, где выделяются папки и запускается батник, может быть и одна из указанных в батнике директорий. Пример
Есть три директории: 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\Октябрь |
|
Отправлено: 15:46, 15-05-2019 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Хотите сказать это удобно, именно так? Насколько часто надо делать это удаление? Может проще задать пути параметром или вопросом и поручить планировщику задачу?
И для чего вообще возиться с подпапками, не проще сразу удалять все пустые ниже или на этом уровне или непустые но начиная с родительской известной? |
Отправлено: 14:43, 16-05-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 59
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Цитата alpap:
Цитата alpap:
Цитата alpap:
Родительские папки содержат массу непустых подпапок, в которых тоже что-то находится. Удалять родительские папки нельзя. А также, нельзя (даже временно) переименовывать и перемещать подпапки. Можно только удалить некоторые из них. Но при этом, если в одной родительской директории одна какая-то папка удаляется, то обязательно удалять ВСЕ подпапки с тем же названием и в других родительских директориях. Если они там есть. |
||||
Отправлено: 17:03, 16-05-2019 | #3 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать NuclearBox, так как вы хотите (из контекстного меню выделять) не выйдет, можно выделенное передать в файл-список и потом придется еще запускать bat где будет сравнение содержимого заданных путей с этим списком. Иначе, если выделенное отдать сразу параметром для bat (прописать в конт. меню), то будет запускаться столько окон bat, сколько путей было выделено.
Я не просто так написал выше, что это будет неудобно так как вы хотите. |
Отправлено: 03:25, 17-05-2019 | #4 |
Пользователь Сообщения: 59
|
Профиль | Отправить PM | Цитировать alpap, спасибо за ответ.
Цитата alpap:
По текущей задаче, при 10-15 наименований под удаление в день, которые редко удаляются сразу все, а обычно за 2-3 раза в течение дня - это нормально. Даже если бы пришлось по одному названию удалять, а не скакать между окнами с поиском - уже было бы легче. Но целесообразно сразу сделать удаление пакетами (несколькими bat-окнами) - машину это не напряжет. Цитата alpap:
Как примерно представлял себе конструкцию батника: 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-файлом. Однако, навыков все равно не хватает ни для первого, ни для второго варианта. |
|||
Последний раз редактировалось NuclearBox, 17-05-2019 в 12:12. Отправлено: 11:51, 17-05-2019 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать ну если несколько окон устраивает, то можно сделать так:
применить этот reg Скрытый текст
Remsim.reg ------------------------------------------- Remsim.bat (у меня лежал в "C:\Bat") @echo off set "d1=C:\Folder2" set "d2=C:\Folder3\Subfolder" for %%a in ("%d1%" "%d2%") do if exist "%%~a\%~nx1" >nul 2>&1 rd /s /q "%%~a\%~nx1" pause 1, 2, 3 |
Отправлено: 14:07, 17-05-2019 | #6 |
Пользователь Сообщения: 59
|
Профиль | Отправить PM | Цитировать alpap, большое спасибо! Это то, что надо! Даже reg и иллюстрации бонусом)
Легко увеличил количество папок до нужного. Отлично работает! Спасибо! |
Отправлено: 16:54, 17-05-2019 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - Удаление файлов и папок по имени | ilfaty | Скриптовые языки администрирования Windows | 9 | 04-11-2016 10:49 | |
VBS/WSH/JS - Найти ярлык по частичному совпадению | csp | Скриптовые языки администрирования Windows | 2 | 29-03-2015 22:16 | |
CMD/BAT - Удаление скрытых папок по маске | chatlaninsan | Скриптовые языки администрирования Windows | 5 | 07-09-2009 17:22 | |
CMD/BAT - [решено] Удаление папок по критериям | jentoso | Скриптовые языки администрирования Windows | 16 | 17-06-2009 11:38 | |
Интерфейс - Притормаживает скролл и вопрос по отображению имен файлов и папок. | The_Crystal | Microsoft Windows 7 | 0 | 06-05-2009 21:07 |
|