PDA

Показать полную графическую версию : [решено] Нужен bat-ник для поиска и удаления файлов и папок по маске


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

Petya V4sechkin
26-03-2011, 16:31
Del /S /Q Путь_к_папке\*My_File*.JPG

Nun-Nun
26-03-2011, 16:54
Petya V4sechkin,

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

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

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

Nun-Nun
26-03-2011, 20:28
megaloman,

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

megaloman
26-03-2011, 20:35
Если в батнике, и папки удаляются только в корне Конкретная папка то 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
megaloman,

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

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

Nun-Nun
26-03-2011, 20:56
megaloman,

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

Michael
07-11-2014, 13:51
Здравствуйте.
Апну тему.
Требуется периодически удалять профили пользователей с ряда серверов. Написал вот такой скрипт
@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
Попробуйте: Delprof2 - User Profile Deletion Tool • Helge Klein (https://helgeklein.com/free-tools/delprof2-user-profile-deletion-tool/).

Georgio
07-11-2014, 16:42
строка вида 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
Iska, вариант интересный, но не подходит по ряду причин, одна из которых - на лицензию нужны деньги.
Команда "RD" в отличие от команды "DEL" не "понимает" символов подстановки. »
А обойти это ограничение как-то можно? Добиться того, чтобы команда del удаляла каталоги по маске так и не смог - либо тишина в ответ либо удаляет только файлы из каталога (если указывать маску)

Georgio
08-11-2014, 01:20
А обойти это ограничение как-то можно? »



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

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

Iska
08-11-2014, 02:18
Iska, вариант интересный, но не подходит по ряду причин, одна из которых - на лицензию нужны деньги. »
Это так.

Michael
08-11-2014, 09:53
Georgio, извиняюсь, не заметил :sorry:




© OSzone.net 2001-2012