如果我做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
被设置为变量吗?
答案 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
(两者都使用))