Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 自然地对文件进行批排序_Sorting_Batch File - Fatal编程技术网

Sorting 自然地对文件进行批排序

Sorting 自然地对文件进行批排序,sorting,batch-file,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 我想按最小到最大的块大小对它们进行排序。有什么想法吗 编辑:

我有一个包含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
我想按最小到最大的块大小对它们进行排序。有什么想法吗


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

Take命令-CMD.EXE替换具有自然排序

如果可以用零填充文件名,则正常排序将返回ok

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

@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

您可以结合数字排序。关于这一点,问题有点不清楚,但如果文件名类似于
20M.log
?@Danstahr,该怎么办?这是一个有效点。我刚刚注意到一些文件名的后缀是K,在所需的列表中它们显示为KB。这是一个很好的观点。您上面发布的转换可以工作,但我如何使用数字排序。它不会做同样的事情吗?只有KB后缀吗?@foxidrive是的,我相信只有KB后缀