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

时间:2019-05-05 18:39:34

标签: windows batch-file variables size

如果我做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 个答案:

答案 0 :(得分:1)

如果您执行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"

答案 1 :(得分:0)

读取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(两者都使用))