2015-01-22 3 views
-3
@echo off 
setlocal disabledelayedexpansion 

set "folder=%~1" 
if not defined folder set "folder=%cd%" 

for /d %%a in ("%folder%\*") do (
    set "size=0" 
    for /f "tokens=3,5" %%b in ('dir /-c /a /w /s "%%~fa\*" 2^>nul ^| findstr /b /c:" "') do if "%%~c"=="" set "size=%%~b" 
    setlocal enabledelayedexpansion 
    echo(%%~nxa # !size! 
    endlocal 
) 

pause 

Я прочитал это на сайте, и все работает отлично, но я пытаюсь включить его в свой собственный код, однако всякий раз, когда я его изменяю, он просто не работает. Кто-то, пожалуйста, объясните мне это, чтобы я мог использовать его для себя.Как работает этот код? (windows batch)

+1

«Просто не работает» никогда не бывает допустимым вопросом. И когда вы задаете вопросы, которые забираются вниз или закрываются, вы можете автоматически автоматически запрещаться. Поэтому подумайте, прежде чем спросить. –

ответ

0
set "folder=%~1" 
if not defined folder set "folder=%cd%" 

Получить указанный каталог передается в качестве аргумента или, если аргумент не присутствует, использовать текущую папку

for /d %%a in ("%folder%\*") do (

для каждой папки по указанному одной

for /f "tokens=3,5" %%b in (' 
    dir /-c /a /w /s "%%~fa\*" 2^>nul ^| findstr /b /c:" " 
') do if "%%~c"=="" set "size=%%~b" 

выполнить рекурсивный dir команду из всего содержимого указанной папки, ища строки, начинающиеся с двух пробелов, то есть нижние колонтитулы dir com MAND. Есть две линии: одна с 4 жетонами и одна с пятью токенами. Нам нужен только первый, т. Е. Строка с 4 жетонами, строка с размером всех файлов под папкой.

Для каждой папки (это рекурсивный каталог) будет линия нижнего колонтитула, нас интересует только последняя, ​​поэтому мы сохраняем значение размера (третий токен в строке) в переменной size , Таким образом, в конце переменная будет содержать окончательный итог листинга.

setlocal enabledelayedexpansion 
echo(%%~nxa # !size! 
endlocal 

Как мы работаем внутри блока кода, чтобы получить измененное значение в переменных нам нужно замедленное разложение эха переменной size, наряду с именем и расширением папки итерируемым.

+0

спасибо за ответ, и я постараюсь не использовать этот вопрос в будущем – BoKa1337

 Смежные вопросы

  • Нет связанных вопросов^_^