为目录中最大的文件设置变量

Set variable for biggest file in the directory

如果我这样做 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 被设置为变量?

如果您这样做 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"

读取dir /?的输出。它告诉您,您可以使用 /os 开关(尝试 dir /os)按大小对文件进行排序,并使用 /b 开关(尝试 dir /os /b)仅打印文件名。 /a-d 也可用于抑制文件夹。

要将 last/biggest 文件捕获到变量中,请使用 for /f 循环(有关详细信息,请参阅 for /?):

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

(注意:这是批处理文件语法。如果直接在命令行上使用,请使用 %a 而不是 %%a(两者))