Установить переменную для самого большого файла в каталоге - PullRequest
1 голос
/ 05 мая 2019

Если я сделаю dir, он перечисляет несколько случайных файлов и показывает его размер в столбце.Как установить переменную для файла, размер которого самый большой?

Например.

$ dir
 Volume in drive C is file_dir

 Directory of C:\file_dir\

2019-05-05  21:33    <DIR>          .
2019-05-05  21:33    <DIR>          ..
2019-05-05  21:33        11 123 000 docs.pdf
2019-05-05  21:33         2 710 996 docs.txt
2019-05-05  21:33       152 708 423 archives.zip

archives.zip устанавливается как переменная?

Ответы [ 2 ]

1 голос
/ 05 мая 2019

Если вы сделаете dir /?, вы увидите, что переключатель /o позволяет сортировать, среди прочих атрибутов, по размеру.Используйте переключатель /b для чистого списка (содержит только имя файла) и запишите результат, используя for /F.

. Для простоты вы можете отсортировать от наименьшего к наибольшему:

@echo off & setlocal
for /f "delims=" %%I in ('dir /b /o:s') do set "largest=%%~I"

Или от наибольшего к наименьшему для эффективности

@echo off & setlocal
set "largest="
for /f "delims=" %%I in ('dir /b /o:-s') do if not defined largest set "largest=%%~I"
0 голосов
/ 05 мая 2019

Считать вывод dir /?. Он говорит вам, что вы можете сортировать файлы по размеру с помощью переключателя /os (попробуйте dir /os) и печатать только имя файла с переключателем /b (попробуйте dir /os /b). Также /a-d полезно для подавления папок.

Чтобы перехватить последний / самый большой файл в переменной, используйте цикл for /f (подробности см. for /?):

for /f "delims=" %%a in ('dir /os /b /a-d *') do set "biggest=%%a"
echo biggest file is %biggest%

(Примечание: это синтаксис командного файла. Для использования непосредственно в командной строке используйте %a вместо %%a (оба))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...