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

Показать сообщение отдельно

Ветеран


Contributor


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

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


c0t0s, ИМХО, моё предыдущее решение не оптимально: там перестартовывается агент для удаления файлов для каждой папки с превышением количества. Вот вариант: агент перестартовывается в случае, если хотя бы в одной папке есть превышение количества файлов, чистятся только папки с превышением.
Код: Выделить весь код
@Echo Off
	Call :GTR "Z:\Base\1\*.vbs" 6 "@@1"
	Call :GTR "Z:\Base\2\*.vbs" 6 "@@2"
	Call :GTR "Z:\Base\3\*.vbs" 6 "@@3"

	>nul 2>&1 Set "@@" &&(
		echo net stop sqlserveragent
		FOR /F "usebackq tokens=1* delims==" %%f IN (`2^>nul Set "@@"`) DO Echo Del /S /Q %%g
		echo net start sqlserveragent
	)
Exit /B

:GTR
	Set "%~3="
	FOR /F "usebackq Skip=%2 delims=" %%f IN (`2^>nul Dir %1 /B /A:-D`) DO Set "%~3=%1" &Exit /B 0
Exit /B 0
Для каждого вызова :GTR переменная должна быть своя "@@1","@@2"........
Для реальной работы Echo надо удалить
Может, не стОит так радикально вычищать файлы, может, оставлять некоторое количество?

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


Последний раз редактировалось megaloman, 05-09-2019 в 14:36.

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

Отправлено: 13:25, 05-09-2019 | #7