在批处理文件中使用分隔符对文件名进行排序

时间:2013-07-26 13:22:51

标签: windows sorting batch-file cmd

我需要在Windows批处理脚本中按照最少的版本号对文件名列表进行排序。 文件名如下:

2_0_0to2_0_1
2_0_1_to2_0_2
...
2_0_12_to2_0_13
...

我在Windows中尝试过dir和sort,但它似乎只关注在两位数的情况下无法工作的字符位置。在Linux中,我用以下方法完成了:ls * .txt | sort -n -t _ -k1 -k2 -k3。如何在Windows上执行此操作。请帮忙。谢谢!

1 个答案:

答案 0 :(得分:4)

试试这个:

@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%x IN (*) DO (
    FOR /f "tokens=1-6delims=_to" %%a IN ("%%~x") DO (
        SET "g1=0%%a"
        SET "g2=0%%b"
        SET "g3=0%%c"
        SET "g4=0%%d"
        SET "g5=0%%e"
        SET "g6=0%%f"
        SET "$!g1:~-2!!g2:~-2!!g3:~-2!!g4:~-2!!g5:~-2!!g6:~-2!=%%~x"
    )
)
FOR /f "tokens=2delims==" %%a IN ('set "$"') DO ECHO %%~a