按批处理文件中的名称排序

时间:2015-01-21 13:08:02

标签: file sorting batch-file

我有一个按版本

命名的.sql文件列表

EG:
5.1.9.5.sql
5.2.1.5.sql
5.5.1.7.sql
5.10.6.2.sql

但是当使用:

循环它们时
for %%i in (*.sql) do (
    echo %%i
)

他们按以下顺序出现:
5.1.9.5.sql
5.10.6.2.sql
5.2.1.5.sql
5.5.1.7.sql

有没有办法让它们按照首先列出的顺序出来,就像windows文件系统一样?无需重命名所有文件。

2 个答案:

答案 0 :(得分:1)

我设法通过按创建日期对文件进行排序来对问题进行排序。

for /f %%i in ('dir /b /o:d *.sql') do (
    echo %%i
)

答案 1 :(得分:0)

如果您发现自己处于文件创建日期和文件上次修改日期都没有帮助的位置,那么您可以使用我的JSORT.BAT utility。它是一个混合JScript /批处理脚本,它有一个/ N选项,可以用数字而不是词法对数字进行排序。该实用程序是纯脚本,可​​以在XP之后的任何Windows机器上本机运行。

for /f %%F in ('dir /b /a-d *.sql^|jsort /n') do (
  echo %%F
)