![]() |
нахождение суммарного объема файлов, хранящихся в каталоге
Добрый вечер.
есть задача Разработать и выполнить командный файл (КФ), выполняющий нахождение суммарного объема файлов, хранящихся в каталоге, имя которого задано первым параметром КФ. Нашел на форуме такую команду: @echo off for /f "tokens=3" %%a in ( 'dir/s/a-d/-c "%1\*"^|findstr/rxc:" *[0-9][0-9]* [^0-9 ][^0-9 ]* *[0-9][0-9]* [^0-9 ][^0-9 ]*"' ) do set "DirSize=%%a" echo Folder: %1 echo Size : %DirSize% Bytes pause>nul Все вроде как работает как мне надо, но помогите разобраться как работает строка: dir/s/a-d/-c "%1\*"^|findstr/rxc:" *[0-9][0-9]* [^0-9 ][^0-9 ]* *[0-9][0-9]* [^0-9 ][^0-9 ]*"' а точнее все что после %1. Заранее благодарю |
Цитата:
Цитата:
В данном случае осуществляется поиск строк как регулярных выражений («/r») с точным совпадением («/x») по указанному шаблону («/c:»). Шаблон состоит из простого выражения (для иллюстрации пробелы заменены на символ «_»): Код:
_*[0-9][0-9]*_[^0-9 ][^0-9 ]*_*[0-9][0-9]*_[^0-9 ][^0-9 ]*
Вот примерный вывод команды «dir /s /-c»: Скрытый текст
Код:
Том в устройстве E имеет метку Works После передачи этого вывода по конвейеру на вход команды «findstr.exe» с указанным шаблоном, на выходе останутся только строки: Скрытый текст
Код:
7 файлов 4529968 байт Эти строки последовательно перебираются по «for /f», извлекая третий по счёту токен («tokens=3»). На последнем проходе (при разборе последней строки) будет получено искомое значение. |
Цитата:
благодарю за помощь вроде как разобрался что и как работает. очень помогли. |
Время: 21:07. |
Время: 21:07.
© OSzone.net 2001-