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

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

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

Аватара для Nun-Nun

Ветеран


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


Конфигурация

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


Не хочет работать вот такая конструкция:
Код: Выделить весь код
cmd /c For /F "tokens=*" %%m IN ('Dir "%SystemDrive%\Documents and Settings" /S /B /AD ^| find /I "Удаляемая папка"') Do RD /S /Q "%%m"
В чём тут ошибка?

Отправлено: 08:38, 08-03-2013

 

Ветеран


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

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


Во-первых, двойной символ процента в имени переменной разбора вместо одинарного. Во-вторых, кавычки.

Попробуйте так (я бы ещё заменил прямой путь на переменную окружения):
Код: Выделить весь код
cmd.exe /c "for /f "tokens=*" %i in ('dir /s /s /a:d "%AllUsersProfile%\.." ^| find.exe /i "Удаляемая папка"') do @rd /s /q "%~i""
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:07, 08-03-2013 | #2



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

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


Ветеран


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

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


Это смотря как запускать. Если из батника, то:
Код: Выделить весь код
for /f "tokens=*" %%i in ('dir /b /s /ad "%SystemDrive%\Documents and Settings\Удаляемая папка"') do rd /s /q "%%i"
если из консоли, то %i вместо %%i

PS. Зачем дергать find.exe?
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:19, 08-03-2013 | #3


Ветеран


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

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


Цитата Foreigner:
PS. Зачем дергать find.exe? »
А, кстати — да. Приведённая конструкция лучше.

Отправлено: 09:31, 08-03-2013 | #4


Аватара для Nun-Nun

Ветеран


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

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


Foreigner,

Спасибо, конечно, но:
Цитата Foreigner:
Зачем дергать find.exe »
Не всё так просто, как кажется! Заранее не извесно где именно окажется "Удаляемая папка" ! Она может быть как в профиле конкретного пользователя, так и в профиле "All Users", а может оказаться и в "Default User". Поэтому и используется команда find !!!

Iska,

Добавил кавычки - всё заработало! Огромное спасибо!

-------
Свобода не означает вседозволенность.


Отправлено: 18:30, 08-03-2013 | #5


Ветеран


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

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


Цитата Nun-Nun:
Не всё так просто, как кажется! Заранее не извесно где именно окажется "Удаляемая папка" ! Она может быть как в профиле конкретного пользователя, так и в профиле "All Users", а может оказаться и в "Default User". Поэтому и используется команда find !!! »
например:
Код: Выделить весь код
dir /b /s /ad "С:\Папка с которой начинаем поиск\Искомая подпапка на любом уровне вложения"
Надо просто попробовать...

Пример выполнения:
Код: Выделить весь код
  > dir /b /s /ad C:\Users\Dmitry\Downloads              
C:\Users\Dmitry\AppData\Local\Microsoft\GFWLive\Downloads
C:\Users\Dmitry\Desktop\Downloads

Последний раз редактировалось Foreigner, 08-03-2013 в 19:11.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:04, 08-03-2013 | #6


Аватара для Nun-Nun

Ветеран


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

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


Foreigner,

Моя конструкция после добавления кавычек прекрасно заработала (впрочем, если запускать из батника, то работает и без кавычек, ну и, разумеется, без cmd). А с Вашим вариантом конструкции
Цитата:
for /f "tokens=*" %%i in ('dir /b /s /ad "%SystemDrive%\Documents and Settings\Удаляемая папка"') do rd /s /q "%%i"
ничего не удаляется, да и не удивительно: как можно что-то найти, задав только место поиска, но не указыв объект поиска, точнее, совместив место поиска с объектом поиска?!
В моём случае "%SystemDrive%\Documents and Settings" - это место поиска, а "Удаляемая папка" - объект поиска. Это и логично и работоспособно.
Код: Выделить весь код
For /F "tokens=*" %%m IN ('Dir "%SystemDrive%\Documents and Settings" /S /B /AD ^| find /I "Удаляемая папка"') Do RD /S /Q "%%m"

-------
Свобода не означает вседозволенность.


Отправлено: 20:34, 11-03-2013 | #7


Аватара для gora

Ушёл из жизни


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

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


Цитата Nun-Nun:
совместив место поиска с объектом поиска »
А если разнести их, хотя бы одной отсутствующей папкой ?
Код: Выделить весь код
for /f "tokens=*" %%i in ('dir /b /s /ad "%SystemDrive%\Удаляемая папка"') do rd /s /q "%%i"
пример удачного поиска:
Код: Выделить весь код
e:\Temp 1>for /F "tokens=*" %i in ('dir /b /s /ad "c:\Users\Public\Sample Videos
"') do Echo rd /s /q "%i"

e:\Temp 1>Echo rd /s /q "c:\Users\Public\Videos\Sample Videos"
rd /s /q "c:\Users\Public\Videos\Sample Videos"
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:54, 11-03-2013 | #8


Аватара для Nun-Nun

Ветеран


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

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


Цитата gora:
А если разнести их, хотя бы одной отсутствующей папкой ? »
Пока не понимаю - почему, но так действительно работает!
Как ни странно, но налицо какой-то "парадокс" или недокументированная возможность интерпретатора команд (системы или ещё не знаю чего). Ведь логичным будет указывать область, где должен выполняться поиск, и поиск должен выполняться именно в ней, а не за её пределами! И тем не менее, всё работает от обратного! Вы можете это пояснить?

-------
Свобода не означает вседозволенность.


Отправлено: 22:22, 11-03-2013 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - Программы для поиска и удаления дубликатов файлов Alex Cop Программное обеспечение Windows 61 07-01-2018 12:00
CMD/BAT - [решено] Нужен bat-ник для поиска и удаления файлов и папок по маске Nun-Nun Скриптовые языки администрирования Windows 14 08-11-2014 09:53
VBS/WSH/JS - конструкция. Которая мапит диски у пользователей Matr_os_kin Скриптовые языки администрирования Windows 7 03-10-2011 08:47
VBS/WSH/JS - Помогите улучшить скрипт для поиска и удаления файлов UpDaTe Скриптовые языки администрирования Windows 4 23-03-2011 04:33
CMD/BAT - Помогите написать скриптик, решющий задачи поиска и удаления по таким критериям sponylum Скриптовые языки администрирования Windows 2 12-02-2011 12:02




 
Переход