我需要在我的硬盘驱动器"c:“上显示有序的文件列表。我们应该按大小订购文件。当我这么做的时候,我就有麻烦了。每个目录都是分组的。例如,我的硬盘上有两个目录: 1-st- "55“,它有一些文件。第二-“66”和那个目录也有一些文件和3个文件。当我试图显示下一个文件的有序列表时:首先从硬盘"\c“中释放所有3个文件,然后显示目录"55”中的文件,然后在旁边显示目录"66“中的文件。如何显示所有文件,并按大小排序,而不按目录对其进行浏览。我使用命令dir /a-d /s /o-s /b。
发布于 2022-10-15 09:40:16
正如穆菲已经提到的那样,dir并不是为了做到这一点而建的。您必须构建文件及其大小的列表(“数组”),然后按大小进行排序。我不确定您是否也需要简单排序的文件列表或它们的大小,所以请根据您的需要调整echo语句。您可以使用sort参数/r简单地反转排序顺序。
@echo off
setlocal enabledelayedexpansion
set cnt=10000
for /r %%a in (*) do (
set /a cnt+=1
set "siz= %%~za"
set "file[!cnt!]=!siz:~-10! %%~fa"
)
REM for debug: set file[
for /f "tokens=2,* delims= " %%a in ('set file[ ^| sort /+15') do (
echo %%a - %%b
)set file[列出了所有变量(我从10000开始,以便使变量名与sort /+15正常工作的长度相同--如果您可能有89998多个文件,那么就进行调整),
sort不能处理自然数,它严格地根据ASCII值进行排序,因此我们必须用空格或零来增加长度,并使它们都达到相同的长度,使sort能够“正常”工作(即a到“人工标准”)。
sort /+15从每一行的第15个字符开始排序,因此忽略变量名--如果更改10000或file[...]变量名,则相应地调整10000。
如果文件大小可能在千兆字节范围内,还可以增加空格(当前为10)和10在:~-10中的数量。
https://stackoverflow.com/questions/74053486
复制相似问题