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

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

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

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


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

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


дана папка,в которой вложены некоторые папки и файлы.
задание:

1. рекурсивно обойти папку.
2. вывести сообщение о кол-ве вложенных файлов
3. рекурсивно удалить папку,где нет файлов

Отправлено: 00:49, 27-12-2010

 


Moderator


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

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


Ван Рег, как-то так?
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions

Call :CheckFileCount ваша_папка_без_слеша_в_конце
Exit /B

:CheckFileCount
  For /F "Delims=" %%I In ('Dir /A-D /B /S "%~1\" 2^>nul ^| Find /V /C ""') Do Set FileCount=%%I
  Echo %FileCount% файлов в папке %~1
  If %FileCount%==0 (
    Echo 	Удаление %~1
    RD /S /Q "%~1"
  ) Else (
    For /F "Delims=" %%I In ('Dir /AD /B "%~1\" 2^>nul') Do Call :CheckFileCount "%~1\%%~I"
  )
GoTo :EOF
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:15, 27-12-2010 | #2



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

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


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


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

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


Разве это CMD?мне в нем нужно было.Но все равно большое спасибо))

Отправлено: 00:14, 28-12-2010 | #3



Moderator


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

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


Цитата Ван Рег:
Разве это CMD?
Да.

Отправлено: 07:47, 28-12-2010 | #4


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


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

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


эм...тупанул...спасибо большое)))

Отправлено: 01:13, 29-12-2010 | #5


Аватара для semiono

Ветеран


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

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


Нужен рекурсивный поиск файлов и их удаление. И всё должно быть максимально просто и желательно в одну строку и даже без пакетного файла.
*********************************************************************************
Найти файлы "%ProgramFiles%\Videodeluxe\{во всех подпапках}\_msi_keyfile_*" && удалить их.
*********************************************************************************
Не лишним будет attrib -R - H -S поставить, хотя я это и сам умею

Любое решение подойдёт, но просто хотелось бы получше и понадёжнее, можно и батником... я просто люблю всё в одну комманду набирать


Если на словах, то я не знаю как в cmd маску типа \*\*\* организовать, и ещё прочитав комманду find меня удивило то что она ищет
не имена файлов, а строки внутри, что меня поставило в тупик, как будто это grep
Маски наверх типа ..\..\ под Майкрософт работают, а вот вниз *\*\.. не знаю что делать.

-------
Полезное сообщение


Последний раз редактировалось semiono, 04-11-2011 в 23:26.


Отправлено: 23:17, 04-11-2011 | #6


Ветеран


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

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


Цитата del /?:
Удаление одного или нескольких файлов.

DEL [/P] [/F] [/S] [/q] [/A[[:]атрибуты]] имена
ERASE [/P] [/F] [/S] [/q] [/A[[:]атрибуты]] имена

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

/S Удаление указанных файлов из всех подкаталогов.
/Q Отключение запроса на подтверждение при удалении файлов.
/A Отбор файлов для удаления по атрибутам (атрибуты: S - Системные файлы; R - Доступные только для чтения; H - Скрытые файлы;A - Файлы для архивирования; префикс "-" имеет значение НЕ).
Если нечто более сложное, нежели простое удаление, то шаблон таков:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /r "%ProgramFiles%\Videodeluxe" %%i in ("_msi_keyfile_*") do (
    echo %%i
)

endlocal
exit /b 0
Удаление, атрибуты и т.п. — на Вашу собственную проработку.
Цитата semiono:
Маски наверх типа ..\..\ »
Это ссылки на родительский каталог, а не маски.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:50, 04-11-2011 | #7


Аватара для semiono

Ветеран


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

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


Код: Выделить весь код
cmd.exe /c del /f /s /q /a rsh "%ProgramFiles%\Videodeluxe\_msi_keyfile_*"
у меня вопрос: работает /a: rsh, работает /a rsh, и даже так /a
это что недокументированные возможности или баг или что?

-------
Полезное сообщение


Отправлено: 01:03, 05-11-2011 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - Netblock обход skelet2394 Защита компьютерных систем 0 20-09-2010 23:54
рекурсивный спуск в таблицу Surround Вебмастеру 5 01-06-2010 12:27
[решено] Рекурсивный поиск файла cra5h_ AutoIt 47 06-02-2010 11:38
Обход Айпи Military Хочу все знать 5 29-09-2009 23:36
Прочее - обход роутера SoA Сетевые технологии 5 03-01-2009 15:17




 
Переход