Войти

Показать полную графическую версию : Пакетный файл, не работает программа


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


@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
Ничего не выводит и не работает вообще

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




© OSzone.net 2001-2012