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

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

Ветеран


Contributor


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

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


Если посчитать, сколько файлов имеет в атрибуте и/или A S H R
Код: Выделить весь код
@Echo Off
cls
	Set "FileIn=D:\*.*"

	Set /A @CountA=0, @CountS=0, @CountH=0, @CountR=0, @CountNo=0, @CountTotal=0
	FOR /F "usebackq delims=" %%f In (`2^>nul Attrib /S "%FileIn%"`) DO (
		Set "Out=%%f"
		Call :Count "%%Out:~0,1%%" "%%Out:~3,1%%" "%%Out:~4,1%%" "%%Out:~5,1%%"
	)

	Set "@Count"
Pause
Exit /B

:Count
	Set /A @CountTotal+=1
	Set /A i=0
	If not %1==" " Set /A @CountA+=1, i+=1 
	If not %2==" " Set /A @CountS+=1, i+=1 
	If not %3==" " Set /A @CountH+=1, i+=1 
	If not %4==" " Set /A @CountR+=1, i+=1
	If %i%==0      Set /A @CountNo+=1
Exit /B
Но в атрибутах может быть несколько параметров, поэтому
@CountTotal <= @CountA + @CountS + @CountH + @CountR + @CountNo
А вот так статистика по всем возможным атрибутам, тут уже всё балансируется.
Код: Выделить весь код
@Echo Off
cls
	Set "FileIn=Z:\*.*"

	FOR /F "usebackq delims=" %%f In (`2^>nul Attrib /S "%FileIn%"`) DO (
		Set "Out=%%f"
		Call :Count "%%Out:~0,1%%" "%%Out:~3,1%%" "%%Out:~4,1%%" "%%Out:~5,1%%"
	)

	Set "@Count"
Pause
Exit /B

:Count
	Set /A @CountTotal+=1
	Set "Vid="
	If not %1==" " Set Vid=%Vid%A
	If not %2==" " Set Vid=%Vid%S
	If not %3==" " Set Vid=%Vid%H
	If not %4==" " Set Vid=%Vid%R
 
        Set /A @Count%Vid%+=1
Exit /B

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

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

Отправлено: 17:56, 28-02-2022 | #3