自然地批量排序文件

时间:2013-10-10 14:02:41

标签: sorting batch-file

我有一个包含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

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

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

1 个答案:

答案 0 :(得分: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