|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление всех папок с одним именем на всех дисках |
|
|
CMD/BAT - [решено] Удаление всех папок с одним именем на всех дисках
|
Старовер Сообщения: 1708 |
Профиль | Отправить PM | Цитировать
Привет!
Задача: Программа создает в случайных местах (предсказать нельзя) папку XXX. То есть папок может быть от 1й и до бесконечности в любой папке, где работал с файлами. Задача написать скрипт который удалял бы при запуске ВСЕ папки XXX где бы они не были. Как организовать правильно перебор и удаление всех папок ? |
|
------- Отправлено: 23:35, 23-10-2009 |
Сообщения: 53441
|
Профиль | Отправить PM | Цитировать volk1234, если XXX - маска, тогда так:
@Echo Off SetLocal EnableExtensions For %%D In (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do ( For /F "Delims=" %%I In ('Dir %%D:\*XXX* /AD /B /S 2^>nul') Do ( If Exist "%%I" Echo RD /S /Q "%%I" ) ) Команда Echo для тестирования (чтобы видеть результат). |
Последний раз редактировалось Petya V4sechkin, 24-10-2009 в 10:20. Причина: перебор дисков. Отправлено: 09:24, 24-10-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Вот блин, с циклами у меня всегда была проблемма.
Насколько я понял последний скрипт убьет папку Folder1 (вместо XXX, чтобы понятнее) например только в корне диска ?? А надо и во вложенных папках. Основная проблема именно в поиске и удалении папки, например, Folder1 в любом месте в любой папке. Например в F:\temp\market\dom\folder1 зы. Или ключ dir /s позволяет добится отображения всех подпапок ? Тогда класс... |
------- Отправлено: 11:50, 24-10-2009 | #3 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 03:52, 26-10-2009 | #4 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать есть еще вариант через WMI:
@Echo Off SetLocal EnableExtensions Set DIR=XXX For /F "UseBackQ Tokens=2 Delims==" %%i In ( `WMIC FSDIR Where 'Name LIKE "%%\\%DIR%"' Get Name /Value^|Find "="` ) Do For /F "Delims=" %%a In ('Echo %%i') Do Echo RD /S/Q "%%a" @Echo Off SetLocal EnableExtensions EnableDelayedExpansion Set DIR=1 For /F "Skip=1 UseBackQ Tokens=1,2" %%i In ( `WMIC LogicalDisk Where 'DriveType^=2 Or DriveType^=3' GET Name^,SystemName` ) Do If Not "%%j"=="" If Defined $R ( Set $R=!$R! OR Drive^^^^="%%i" ) Else Set $R=Drive^^="%%i" If Not Defined $R Exit /B 1 For /F "UseBackQ Tokens=2 Delims==" %%i In ( `WMIC FSDIR Where '^(%$R%^) And Name LIKE "%%\\%DIR%"' Get Name /Value^|Find "="` ) Do For /F "Delims=" %%a In ('Echo %%i') Do Echo RD /S/Q "%%a" |
|
Последний раз редактировалось amel27, 30-10-2009 в 12:40. Причина: очепятка Отправлено: 11:32, 26-10-2009 | #5 |
Сообщения: 53441
|
Профиль | Отправить PM | Цитировать volk1234, а вообще, опасно это - вот так папку везде удалять.
|
Отправлено: 13:51, 26-10-2009 | #6 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Да. Надо наверное доработать скрипт - сначала вывод найденых папок - а потом запрос на удаление.....
Кто возьмется ? Я никак не могу взяться за изучение справки по команде For - для меня темный лес.... |
------- Отправлено: 13:25, 29-10-2009 | #7 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать volk1234, а если они все на экран не влезут?..
если в RD убрать ключ /Q, то будет спрашивать для каждой папки |
Отправлено: 12:41, 30-10-2009 | #8 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата amel27:
Вместо паузы можно предусмотреть выбор вариантов "Грохнуть - Выход". |
|
Отправлено: 12:51, 30-10-2009 | #9 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Вообще я сильно сомневаюсь что таких папок будет больше 200-300, по умолчанию буфер cmd = 300 строк.
Даже в большом количестве папок можно разглядеть - что конкретную папку удялять не надо - ответить нет - переименовать нужные папки и снова запустить скрипт. Loginvovchik развил бурную деятельность, черт меня дернул сказать ему про скрипт http://community.acdsee.com/forums/t...ders-originals |
------- Отправлено: 13:07, 30-10-2009 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Удаление всех файлов из папки | 7human7 | Скриптовые языки администрирования Windows | 50 | 07-11-2023 21:39 | |
Интерфейс - [решено] Как поменять иконки папок всех РАЗОМ в Win 7? | sputNIK37 | Microsoft Windows 7 | 1 | 31-08-2012 10:45 | |
Разное - [решено] Как избавиться от $RECYCLE.BIN на всех дисках? | Abra | Microsoft Windows 7 | 2 | 02-12-2009 17:09 | |
Доступ - [решено] Отключение автозапуска на всех дисках | GifuN | Microsoft Windows 2000/XP | 1 | 14-05-2008 16:37 | |
Удаление всех папок и файлов из папки c:\Temp | DIKPro | Microsoft Windows NT/2000/2003 | 10 | 15-08-2006 16:20 |
|