Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удалить папки по маске

Ответить
Настройки темы
CMD/BAT - [решено] Удалить папки по маске

Аватара для run0ut

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Нужно удалить с определённого диска все папки по маске. Если пишу :
Код: Выделить весь код
>for /D /R D:\ %i in (*Path*) do rmdir /S /Q "%i"
то все прекрасно работает. Если кидаю это в cmd скрипт и запускаю его, то в ответ вижу:
Код: Выделить весь код
Непредвиденное появление: i.
Что я делаю не так?

Отправлено: 14:57, 21-05-2009

 

Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата run0ut:
Что я делаю не так? »
Переменная цикла в .bat файле должна предваряться двойным (%%i) знаком процента, а не одинарным (%i) как в ком. строке.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:15, 21-05-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 16
Благодарности: 1

Профиль | Отправить PM | Цитировать


Здравствуйте!
Задача: нужно удалить все папки *M A S K A* только из корня каталога F L D R , но не из вложенных в него папок (и всё упомянутое может иметь пробелы в именах).
Например, такой скрипт
Код: Выделить весь код
for /f "delims=" %%i in ('dir /b /s /ad "F L D R\*M A S K A*"') do (rd /s /q "%%i")
удаляет папки *M A S K A* в т.ч. и из вложенных папок каталога F L D R .
Нельзя ли в скрипте что-то изменить (или предложить новый)?

Отправлено: 16:08, 20-03-2017 | #3


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


qaaqasqad, удалите ключ " /s", который отвечает за обработку вложенных папок.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:19, 20-03-2017 | #4


Новый участник


Сообщения: 16
Благодарности: 1

Профиль | Отправить PM | Цитировать


sov44, спасибо!
(Я так понимаю, Вы о втором по счету ключе /s).
Если бы всё было так просто, не спрашивал бы. Что касается обоих ключей /s :
такой скрипт
Код: Выделить весь код
for /f "delims=" %%i in ('dir /b /s /ad "F L D R\*M A S K A*"') do (rd /q "%%i")
почему-то удаляет папки *M A S K A* в т.ч. и из вложенных папок каталога F L D R ,
а такой скрипт
Код: Выделить весь код
for /f "delims=" %%i in ('dir /b /ad "F L D R\*M A S K A*"') do (rd /s /q "%%i")
вообще ничего не удаляет.
Пожалуйста попробуйте у себя, подтвердите или опровергните.

Последний раз редактировалось qaaqasqad, 21-03-2017 в 21:35.


Отправлено: 17:18, 20-03-2017 | #5


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
for /f "delims=" %%i in ('dir /b /ad "F L D R\*M A S K A*"') do rd /q "%%i"
Батник должен лежать рядом с папками. Если в в именах папок имеется кириллица, батник сохранять в 866 кодировке.

Отправлено: 17:40, 20-03-2017 | #6


Новый участник


Сообщения: 16
Благодарности: 1

Профиль | Отправить PM | Цитировать


sov44,
Для чистоты эксперимента попробовал на WinXP SP3 pro (свежеустановленная с ориг CD, без обновлений),
однострочный .cmd и папка F L D R лежат на одном и том же уровне - в корне диска C:\ ,
кирилица не используется (кодировка 1251).
Вариант из Вашего сообщения не удаляет ничего...
При добавлении в этот же .cmd первого по счету ключа /s - удаляет "и в корне, и в подпапках" вне зависимости от наличия или отсутствия второго по счету ключа /s .
(самому смешно)

Последний раз редактировалось qaaqasqad, 20-03-2017 в 18:48.


Отправлено: 18:40, 20-03-2017 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата qaaqasqad:
Вариант из Вашего сообщения не удаляет ничего... »
Ну, почему сразу «ничего». Вот, скажем, если рядом с «F L D R» окажутся папки, совпадающие с найденными внутри «F L D R» именами папок по шаблону «*M A S K A*» — он их, несомненно, удалит .

Цитата qaaqasqad:
При добавлении в этот же .cmd первого по счету ключа /s - удаляет "и в корне, и в подпапках" вне зависимости от наличия или отсутствия второго по счету ключа /s .
(самому смешно) »
Ничего смешного, как заказали, так и работает.

Код: Выделить весь код
for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:d "F L D R\*M A S K A*`) do echo rd /q "F L D R\%%i"
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:57, 20-03-2017 | #8


Новый участник


Сообщения: 16
Благодарности: 1

Профиль | Отправить PM | Цитировать


Iska,
спасибо за "F L D R\%%i" !
Я думаю, здесь
Код: Выделить весь код
(rd /s /q "F L D R\%%i")
ключ /s необходим, т.к. без него будут удаляться только пустые папки *M A S K A*.
Вариант из Вашего сообщения у меня почему-то не удаляет никакие (даже пустые) папки *M A S K A* "ни в корне, ни в подпапках"...
В общем, суммировав всё подсказанное, пришел к такому:
Код: Выделить весь код
for /f "delims=" %%i in ('dir /b /a:d "F L D R\*M A S K A*"') do (rd /s /q "F L D R\%%i")
Этот скрипт (как для меня-новичка ) реально удаляет все (в т.ч. непустые) папки *M A S K A* только из корня каталога F L D R , но не из вложенных в него папок (и всё упомянутое может иметь пробелы в именах). Если не прав - поправьте...

Последний раз редактировалось qaaqasqad, 21-03-2017 в 00:35.


Отправлено: 23:29, 20-03-2017 | #9


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата qaaqasqad:
Я думаю, здесь
Код: Выделить весь код
(rd /s /q "F L D R\%%i")
ключ /s необходим, т.к. без него будут удаляться только пустые папки *M A S K A*.

Если не прав - поправьте...»
Правы.

Отправлено: 01:27, 21-03-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удалить папки по маске

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как программно удалить пустые папки ? R.M.L AutoIt 8 17-05-2010 11:07
Разное - Как удалить профильные папки из Личной Папки без последствий? Котяр Microsoft Windows 7 0 28-11-2009 20:36
[решено] Не могу удалить папки!!!!! Карина Microsoft Windows 2000/XP 21 17-04-2008 10:46
[решено] Как удалить файлы с папки...? Cobra_1_Stas Автоматическая установка Windows 2000/XP/2003 40 10-10-2006 10:11
Удалить файлы в папке по маске Nealles Программирование и базы данных 4 10-09-2003 23:11




 
Переход