Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Пакетный файл, не работает программа (http://forum.oszone.net/showthread.php?t=350785)

edward_goten@vk 28-02-2022 11:39 2980969

Пакетный файл, не работает программа
 
Пакетный файл, предназначенный для отражения статистики по атрибутам файлов в каталоге, заданном определенным путем. В каталоге файлы с определенным атрибутом подсчитываются, а их количество передается в текстовый файл статистики с дописыванием в него информации вида «Файлов с атрибутом <атрибут>: <количество>». Пути к каталогу и месту назначения, где сохраняется файл статистики, задаются в качестве пакетных параметров. В конце выводится сообщение вида «Отчет сохранен в каталог <путь>».

Код:

@echo on
SETLOCAL EnableDelayedExpansion

for /f "delims=" %%x in ('attrib/s "C:\*.*"') do
(set "$x=%%x"
 if "!$x!"=="A" set/a $A+=1
 if "!$x!"=="S" set/a $S+=1
 if "!$x!"=="H" set/a $H+=1
 if "!$x!"=="R" set/a $R+=1
)
(echo Files with attrib A" : %$A%
 echo Files with attrib S" : %$S%
 echo Files with attrib H" : %$H%
 echo Files with attrib R  : %$R%
)>>"C:\Users\Eduard\Desktop\2.4.3\log.txt"
echo Отчет сохранен в каталог "C:\Users\Eduard\Desktop\2.4.3\log.txt"
pause


edward_goten@vk 28-02-2022 12:34 2980972

Ничего не выводит и не работает вообще

megaloman 28-02-2022 17:56 2980981

Если посчитать, сколько файлов имеет в атрибуте и/или 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



Время: 02:12.

Время: 02:12.
© OSzone.net 2001-