Board logo

标题: [文本处理] XP下批处理怎样把文件名顺序排列输出? [打印本页]

作者: 猪科技    时间: 2021-6-13 07:28     标题: XP下批处理怎样把文件名顺序排列输出?

比如jpg,bmp图片,文件名有的含数字,有的不含数字,如何顺序排列并输出文件名
作者: 路过    时间: 2021-6-13 18:48

  1. @echo off
  2. dir /b *.*|sort
  3. pause
复制代码

作者: 猪科技    时间: 2021-6-13 19:35

1.jpg
10.jpg
100.jpg
11.jpg
12.jpg
2.jpg
20.jpg
A.bat
背景.png
第31日.jpg
请按任意键继续. . .

没有顺序排列
作者: newswan    时间: 2021-6-13 19:43

第三方的sort
sort -n
作者: 猪科技    时间: 2021-6-14 08:11

C:\Downloads>sort -n
-n系统找不到指定的文件。

windows不支持-n
作者: 路过    时间: 2021-6-14 08:15

回复 3# 猪科技
Sort是按首字符的ASCII码大小排序,相同则比较下一个。默认小的在前面,大的在后面。
作者: 猪科技    时间: 2021-6-14 08:39

谢谢,也就是说,100,里面是1和0,所以100比2小,2比3小那Sort排序还真是没救了
作者: qixiaobin0715    时间: 2021-6-14 08:49

排序是一个复杂的问题,程序一般是按字符来的。通常有按字母和数字顺序排序的说法。
作者: newswan    时间: 2021-6-14 10:33

回复 5# 猪科技


    linux 下的 sort ,支持按数字排序
    我用的msys2
作者: Batcher    时间: 2021-6-14 12:39

回复 5# 猪科技


4楼说的是这个 sort.exe 第三方命令行工具
http://bcn.bathome.net/s/tool/index.html?key=sort
作者: xp3000    时间: 2021-6-14 17:27

  1. @if(0)==(0) echo off&setlocal enabledelayedexpansion
  2. @for /f "delims=" %%i in ('dir /b/a-d/on "*.jpg" "*.png" "*.bmp"') do (
  3.     @for /f "delims=" %%j in ('echo %%i^|cscript -nologo -e:jscript "%~f0"') do (
  4.     set str=00000000%%j&set str=!str:~-8!
  5.     )
  6. echo !str!-%%i>>sort.txt
  7. )
  8. pause & exit /b
  9. @end
  10. WSH.echo(WScript.StdIn.ReadAll().replace(/^[^0-9.]+([0-9]+)/g, '$1').replace(/^[^0-9.]+/g, '99999999:').match(/^[0-9]+/g).join('\r\n'))
复制代码
  1. @echo off&@CD /D "%~dp0"
  2. for /f "tokens=2* delims=-" %%i in ('type sort.txt^|sort /+1') do (
  3. echo %%i
  4. )
  5. pause
复制代码
只会分开弄,第一次获取文件名补0和加9后输出TXT,第二次读取TXT进行排列,
谁知道怎么合并?不输出TXT




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2