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

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

Ответить
Настройки темы
CMD/BAT - Удалить папки, в которых отсутствуют вложенные подпапки

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


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

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


Доброго времени суток!

Возник вопрос...
Как можно средствами BAT-файла найти и удалить папки, в которых отсутствуют вложенные подпапки, имя которых имеет вид stor_[произвольные символы]?

Вкратце опишу, для чего мне это необходимо:
Есть специфический софт на рабочих станциях, который в процессе работы создает по пути C:\OUT\ папку с текущей датой (к примеру C:\OUT\20190907\), в которую уже пишутся логи работы вида stor_*.log и выходные данные в подпапках вида stor_*\*.data.
В конце дня этот же софт должен выгружать все выходные данные на сервер, после чего удалять папку C:\OUT\20190907\ и приносить радость...
НО периодически возникает ситуация, когда в связи с отсутствием входных данных, отсутствуют и выходные, т.е. папка C:\OUT\20190907\ создалась при запуске рабочей станции, в ней есть лог, но нету вложенных подпапок stor_* с данными.
В этом случае вечером ничего не выгружается, т.к. физически ничего нет, но на следующий день софт отказывается работать считая что выгрузка за пред идущий день не выполнена (но выгружать то нечего), пока не удалишь руками папку C:\OUT\20190907\.

Поскольку исправления бага ПО скорее всего не будет, пытаюсь изобрести костыль который будет удалять из C:\OUT\ те папки с датой, в которых отсутствуют вложенные подпапки.

конструкция вида
Код: Выделить весь код
::==crutch.bat==
SET src=C:\OUT
for /f %%a IN ('dir "%src%" /b') do if exist %src%\%%a\stor_* rd /q %src%\%%a
не работает, так как if по маске stor_* находит файлы логов.

Прошу совета в решении задачи

Отправлено: 14:45, 17-09-2019

 

Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
	Set "BoxOut=Z:\Box_Out"
	Set "Mask1=20??????"
	Set "Mask2=stor_*.*"
	FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxOut%\%Mask1%" /B /A:D`) DO (
		>nul 2>&1 Dir /B /A:D "%BoxOut%\%%d\%Mask2%" ||Rd /S /Q "%BoxOut%\%%d"
	)
Exit /B
Подкорректируйте пути

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 15:47, 17-09-2019 | #2



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

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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] удалить все пустые подпапки firstarey Скриптовые языки администрирования Windows 4 25-07-2014 11:47
CMD/BAT - [решено] Удалить из папки подпапки с определенными именами Fresh96 Скриптовые языки администрирования Windows 3 25-03-2014 15:38
Интерфейс - Пункт контекстного меню отправить и вложенные папки artur.harin Microsoft Windows 7 2 31-05-2013 18:07
Разное - Немогу удалить Папку и в ней подпапки Baw17 Microsoft Windows 2000/XP 12 30-07-2011 07:12
Разное - [решено] Меню Отправить не отображает вложенные папки 3-man Microsoft Windows 7 1 11-08-2010 12:16




 
Переход