DOCznet
18-02-2015, 16:49
Есть большой-большой каталог с большим кол-вом подкаталогов, в некоторых из них есть подпапка "arch". Нужно вычислить сумму размера всех файлов в каталоге "arch" и его подкаталогах.
Использую след. скрипт:
setlocal
@for /f "tokens=*" %%i in (' dir /b /s /ad "Z:\Dir1\Dir2\arch" ') do (
pushd "%%i" || goto:eof
for /f "tokens=*" %%k in (' dir /b /s /a-d "%%i" ') do (
for /F "Delims=" %%j In (C:\tmpsz.txt) Do (
Set /a tmpsz=%%~j+%%~zk
@echo %tmpsz%>C:\tmpsz.txt))
)
C:\tmpsz.txt изначально изначально содержит один единственный символ - "0".
Загвоздка в том, что "эха" не выводит запрашиваемую переменную... вернее на момент попытки вывода запрошенной переменной она будто бы не записалась. Пробовал упрощенную конструкцию вида :
set /a sz=0
...
...
...do (set /a sz=%%~zk+%sz%)
...
В таком случае переменная всегда берется заданная в самом начале и в последствии не изменяется
Подумал, что это как-то связано с глубиной циклов - добавил в начало батника "SetLocal EnableDelayedExpansion" и пытался вывести "эхой" переменную через "!" знаки, вмест "%", но батник почти сразу "падал" после запуска.
Так же пробовал "echo" выносить за скобки самого нижнего цикла на 1 и 2 уровня выше.
В чем я тут накосячил?
Использую след. скрипт:
setlocal
@for /f "tokens=*" %%i in (' dir /b /s /ad "Z:\Dir1\Dir2\arch" ') do (
pushd "%%i" || goto:eof
for /f "tokens=*" %%k in (' dir /b /s /a-d "%%i" ') do (
for /F "Delims=" %%j In (C:\tmpsz.txt) Do (
Set /a tmpsz=%%~j+%%~zk
@echo %tmpsz%>C:\tmpsz.txt))
)
C:\tmpsz.txt изначально изначально содержит один единственный символ - "0".
Загвоздка в том, что "эха" не выводит запрашиваемую переменную... вернее на момент попытки вывода запрошенной переменной она будто бы не записалась. Пробовал упрощенную конструкцию вида :
set /a sz=0
...
...
...do (set /a sz=%%~zk+%sz%)
...
В таком случае переменная всегда берется заданная в самом начале и в последствии не изменяется
Подумал, что это как-то связано с глубиной циклов - добавил в начало батника "SetLocal EnableDelayedExpansion" и пытался вывести "эхой" переменную через "!" знаки, вмест "%", но батник почти сразу "падал" после запуска.
Так же пробовал "echo" выносить за скобки самого нижнего цикла на 1 и 2 уровня выше.
В чем я тут накосячил?