我需要在 Windows 批处理脚本中按版本号至少对文件名列表进行排序。文件名如下:
2_0_0to2_0_1
2_0_1_to2_0_2
...
2_0_12_to2_0_13
...
我在 Windows 中尝试过 dir 和 sort ,但它似乎只查看在两位数的情况下不起作用的 char 位置。在 Linux 中,我使用以下方法完成了此操作: ls *.txt | 排序 -n -t _ -k1 -k2 -k3。如何在 Windows 上执行此操作。请帮忙。谢谢!
我需要在 Windows 批处理脚本中按版本号至少对文件名列表进行排序。文件名如下:
2_0_0to2_0_1
2_0_1_to2_0_2
...
2_0_12_to2_0_13
...
我在 Windows 中尝试过 dir 和 sort ,但它似乎只查看在两位数的情况下不起作用的 char 位置。在 Linux 中,我使用以下方法完成了此操作: ls *.txt | 排序 -n -t _ -k1 -k2 -k3。如何在 Windows 上执行此操作。请帮忙。谢谢!
试试这个:
@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