1

我有一个包含 20 个文件的文件夹,我希望对它们进行排序,类似于 Windows 资源管理器的方式。我拥有的文件都有块大小的前缀,如下所示:

1024KB.log
32KB.log
64KB.log
4KB.log
256KB.log
512KB.log

但是当我对它们进行批量排序时,它只查看第一个数字,然后像这样对它们进行排序:

1024KB.log
256KB.log
32KB.log
4KB.log
512KB.log
64KB.log

我想按从最小到最大的块大小对它们进行排序。有任何想法吗?

编辑:我还必须保持文件名的完整性,因为然后我调用另一个使用文件名并创建字符串的脚本。

4

1 回答 1

3

Take Command - CMD.EXE 替换具有自然排序。

如果您可以用零填充文件名,那么正常排序将返回它们。

此代码将返回按数字排序的它们:

@echo off
type nul>1024KB.log
type nul>32KB.log
type nul>64KB.log
type nul>4KB.log
type nul>256KB.log
type nul>512KB.log

setlocal enabledelayedexpansion
for %%a in (*.log) do (
set num=0000000000%%a
set num=!num:~-14!
set $!num!=%%a
)
for /f "tokens=1,* delims==" %%a in ('set $0') do echo %%b
pause
于 2013-10-10T14:07:30.747 回答