2013-07-26 50 views
0

我需要在Windows批处理脚本中,通过其文件名的列表(至少第一个文件名)进行排序。 文件名是这样的:使用批处理文件中的分隔符对文件名进行排序

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

我已经在Windows尝试目录和排序,但它似乎只能看着烧焦的位置这不会在两位数的情况下工作。在Linux中,我使用了:ls * .txt | sort -n -t _ -k1 -k2 -k3。如何在Windows上执行此操作。请帮忙。谢谢!

+0

AFAIK:Windows没有任何原生自然的排序工具。您将不得不下载第三方工具。尝试排序在这个http://unxutils.sourceforge.net/ –

+0

感谢您的指针。但该工具不支持排序功能。 – Evan

+0

你能按日期/时间分类以得到你想要的东西吗? – foxidrive

回答

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 
+1

聪明的解决方案Endoro,排序可能不需要/ r。我在0之前得到12。否则它运作良好。 OP可能需要进一步填充,但这很容易。 – foxidrive

+0

@foxidrive非常感谢您的评论。我的英语并不是最好的,所以我不确定“最不先做”是什么意思? – Endoro

+1

至少先意味着少一个,或者先低一些。所以2.0.0然后2.0.1然后2.0.12 – foxidrive

相关问题