aries15ssh
17-09-2019, 14:45
Доброго времени суток!
Возник вопрос...
Как можно средствами 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_* находит файлы логов.
Прошу совета в решении задачи
Возник вопрос...
Как можно средствами 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_* находит файлы логов.
Прошу совета в решении задачи