Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Нужен bat-ник для поиска и удаления файлов и папок по маске (http://forum.oszone.net/showthread.php?t=203090)

Nun-Nun 26-03-2011 15:52 1644384

Нужен bat-ник для поиска и удаления файлов и папок по маске
 
Необходим bat-ник, выполняющий поиск и удаление заданных по маске файлов в папке и всех вложенных в неё подпапках. Например, файлов типа My_File*.JPG, *My_File.JPG, *My_File*.JPG и т.п.

Petya V4sechkin 26-03-2011 16:31 1644419

Код:

Del /S /Q Путь_к_папке\*My_File*.JPG

Nun-Nun 26-03-2011 16:54 1644433

Petya V4sechkin,

Благодарю, действительно работает. Не знал, что для этого требуется всего лишь ключ /S.

А как аналогичным образом сделать поиск и удаление в конкретной папке всех подпапок, имеющих в своём названии *My_File, *My_File* или My_File* ?

P.S. Название темы для точности поправил.

Nun-Nun 26-03-2011 20:28 1644552

megaloman,

Попробовал - не работает. Дело в том, что подпапки с мною указанными названиями могут находиться не на первом уровне конкретной папки, а вложены глубже - ещё и в другие подпапки. Может в этом всё дело?

megaloman 26-03-2011 20:35 1644558

Если в батнике, и папки удаляются только в корне Конкретная папка то
Код:

FOR /D %%I IN ("d:\Конкретная папка\*My_File*.*" ) DO Rd "%%I" /S /Q
При наличии русских букв батник должен быть записан в 866 кодировке.

Если надо удалять папки не только в корне, а и во вложенных папках, то
Код:

Echo off

FOR /D %%i IN ("d:\Конкретная папка\*My_File*.*" ) DO RD "%%i" /S /Q
FOR /F "usebackq delims=" %%j IN (`Dir "d:\Конкретная папка\" /S /B /A:D`) DO FOR /D %%i IN ("%%j\*My_File*.*" ) DO RD "%%i" /S /Q

Спасибо Iska, в одной из предыдущих тем подсмотрел у него /D в FOR

Nun-Nun 26-03-2011 20:51 1644573

megaloman,

Огромнейшее спасибо! Добавил только последнюю строчку из Вашего скрипта и всё сработало! Первая строчка нужна или нет, если и без неё работает?

megaloman 26-03-2011 20:55 1644575

Nun-Nun, Первая строка необходима для удаления подпапок по маске в корне папки. Если в корне подпапок с такой маской нет, то строка не нужна. Но при этом нарушается общность работы батника: а вдруг папочка всё-таки появится?

Nun-Nun 26-03-2011 20:56 1644576

megaloman,

Ну что ж, всё понятно, принял к сведению. Ещё раз спасибо! Тему можно закрывать.

Michael 07-11-2014 13:51 2426061

Здравствуйте.
Апну тему.
Требуется периодически удалять профили пользователей с ряда серверов. Написал вот такой скрипт
Код:

@echo off
rem Удаление профилей пользователя с серверов
rem имя пользователя, профили которого необходимо удалить
set del_user_profile=user_name
FOR %%S IN (server_1, server_2) DO (
                                        echo Сервер %%S
                                        rd "\\%%S\c$\Documents and Settings\%del_user_profile%" /s /q
                                                )
pause
pause

скрипт работает как надо, но есть проблема - имя профиля может быть следующего вида:
user_name
user_name.domain
user_name.domain.000
и т.д.
как мне это учесть?
строка вида
Код:

rd "\\%%S\c$\Documents and Settings\%del_user_profile%*" /s /q
дает ошибку
Цитата:

Синтаксическая ошибка в имени файла, имени папки или метке тома.
Как решить проблему?
Спасибо

Iska 07-11-2014 16:29 2426132

Попробуйте: Delprof2 - User Profile Deletion Tool • Helge Klein.

Georgio 07-11-2014 16:42 2426142

Цитата:

Цитата Michael
строка вида
Код:

rd "\\%%S\c$\Documents and Settings\%del_user_profile%*" /s /q
дает ошибку
Цитата:

Синтаксическая ошибка в имени файла, имени папки или метке тома.
Как решить проблему? »


Код:

for /d %%i in ("\\%%S\c$\Documents and Settings\%del_user_profile%*") do rd /q/s "%%i"
Команда "RD" в отличие от команды "DEL" не "понимает" символов подстановки.

Michael 08-11-2014 00:55 2426341

Iska, вариант интересный, но не подходит по ряду причин, одна из которых - на лицензию нужны деньги.
Цитата:

Цитата Georgio
Команда "RD" в отличие от команды "DEL" не "понимает" символов подстановки. »

А обойти это ограничение как-то можно? Добиться того, чтобы команда del удаляла каталоги по маске так и не смог - либо тишина в ответ либо удаляет только файлы из каталога (если указывать маску)

Georgio 08-11-2014 01:20 2426346

Цитата:

Цитата Michael
А обойти это ограничение как-то можно? »



Цитата:

Цитата Georgio
Код:

for /d %%i in ("\\%%S\c$\Documents and Settings\%del_user_profile%*") do rd /q/s "%%i"
»

Я что-то не так написал? Просто замените свою неработающую строку на приведённую мной.

Iska 08-11-2014 02:18 2426356

Цитата:

Цитата Michael
Iska, вариант интересный, но не подходит по ряду причин, одна из которых - на лицензию нужны деньги. »

Это так.

Michael 08-11-2014 09:53 2426400

Georgio, извиняюсь, не заметил :sorry:


Время: 13:19.

Время: 13:19.
© OSzone.net 2001-