按渐进数字顺序对列表进行排序

时间:2014-05-08 14:10:31

标签: batch-file for-loop

示例文件列表:

  • 1.JPG
  • 2.JPG
  • 3.JPG
  • 22.jpg

迭代列表的简单循环

for /r %j in (*.jpg) do @echo %~nxj

得出以下结果:

1
2
22
3

如何连续订购结果,如下所示?

1
2
3
22

谢谢大家

2 个答案:

答案 0 :(得分:0)

我刚刚为你做了这个似乎你的方式可行,但有一种更简单的方法。

@echo off
del /q /s /f "%temp%\TEMP.tmp">nul
dir /b *.* >> %temp%\TEMP.tmp
SetLocal EnableDelayedExpansion

for /f "delims=" %%x in ('type %temp%\TEMP.tmp') do ( 
    set "Var=%%x"
    ECHO !Var!
)
pause

将bat文件放在与图片相同的目录中。

答案 1 :(得分:0)

@ECHO Off
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
(
FOR /f %%a IN ('dir /b /a-d "%sourcedir%\*.jpg" ') DO (
  SET /a seq=1000000000+%%~na
  ECHO !seq!) 
)>"%temp%\tempfile"

FOR /f %%a IN ('sort "%temp%\tempfile"') DO (
 SET /a seq=%%a-1000000000
  ECHO !seq!.jpg) 
)

GOTO :EOF

这应该对您有用 - 当然,您需要设置自己的sourcedir,临时文件名取决于您,它不会被清理,它只能用于没有前导零的纯数字文件名< 1000000000。假设.jpg扩展名。