找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 35231|回复: 13

[文件操作] 【已解决】批处理如何按资源管理器的文件名递增的排序重命名文件

[复制链接]
发表于 2015-3-14 16:20:19 | 显示全部楼层 |阅读模式
利用此代码对文件夹下的图片做重命名处理  但是顺序出现问题  麻烦各位老师帮忙纠正一下  选项
代码:
  1. @echo off & setlocal enabledelayedexpansion
  2. pushd "G:\未标记\0004\002"
  3. for /f "delims=" %%i in ('dir/b/s *.jpg') do (
  4.     set str=%%~dpi&set str2=%%~nxi
  5.     setlocal enabledelayedexpansion
  6.     if not "!str!"=="!num!" (
  7.         set "n=10001"
  8.         ren "!str!*.jpg" "*.*.jpg"
  9.     ) else set /a n+=1
  10.     ren "!str!!str2!.jpg" "!n!.jpg"
  11.     for %%a in (!n!) do endlocal&set n=%%a
  12.     set "num=%%~dpi"
  13. )
  14. pause
复制代码
图片文件名格式

图中 红色部分 为什么在命名后跑到后面去了

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-3-14 17:17:07 | 显示全部楼层
截图是改名之前的还是改名之后的?
改名的规律是什么?
 楼主| 发表于 2015-3-14 17:18:22 | 显示全部楼层
截图是改名之前的还是改名之后的?
改名的规律是什么?
DAIC 发表于 2015-3-14 17:17

截图是改名之前
发表于 2015-3-16 15:21:56 | 显示全部楼层
本帖最后由 tigerpower 于 2015-7-4 07:31 编辑

dir默认ASCII排序,非数字大小排序

评分

参与人数 1技术 +1 收起 理由
001011 + 1 非常感谢

查看全部评分

 楼主| 发表于 2015-3-17 22:42:17 | 显示全部楼层
回复 4# tigerpower
非常感谢  完美的解决了我的问题
发表于 2015-3-18 00:16:19 | 显示全部楼层
本帖最后由 CrLf 于 2015-3-18 00:30 编辑
  1. 1>1/* :
  2. @echo off
  3. pushd "G:\未标记\0004\002"
  4. for /f "delims=" %%i in ('dir/b/s *.jpg ^| cscript -nologo -e:jscript "%~0" \d+') do (
  5.    echo %%i
  6.    rem 这里以输出为例,爱咋咋
  7. )

  8. pause & eixt /b */

  9. var re_match = new RegExp(WSH.Arguments(0)+'|.','g')
  10. var re_test = new RegExp(WSH.Arguments(0),'g')

  11. var text = WScript.StdIn.ReadAll().split(/[\r\n]+/)

  12. for(var i=0;i<text.length;i++){
  13.         var match = text[i].replace(/.*[\\\/]/,'').match(re_match)
  14.         if(match){
  15.                 for(var j=0;j<match.length;j++)
  16.                         match[j] = re_test.test(match[j])?1*match[j]:match[j]
  17.         }
  18.         text[i] = {string:text[i],array:match?match:[]}
  19. }

  20. text = text.sort(function(a,b){
  21.         maxlength = Math.max(a.array.length,b.array.length)
  22.         for(var i=0;i<maxlength;i++){
  23.                 if(a.array[i]<b.array[i])return -1
  24.                 if(a.array[i]>b.array[i])return 1
  25.         }
  26.         return a.array.length-b.array.length
  27. })

  28. Object.prototype.toString=function(){return this.string}
  29. WSH.Echo(text.join('\r\n'))
复制代码
发表于 2015-3-18 00:19:13 | 显示全部楼层
本帖最后由 CrLf 于 2015-3-20 22:18 编辑

也可以用高版本 gnu sort 的 -V 开关
  1. <!-- :
  2. @echo off

  3. pushd "G:\未标记\0004\002"
  4. mshta "%~f0"

  5. for /f "delims=" %%i in ('dir/b/s *.jpg ^| sort -V') do (
  6.    echo %%i
  7.    rem 这里以输出为例,爱咋咋
  8. )
  9. pause & exit /b
  10. -->

  11. <script src=http://www.bathome.net/lib/diy/Tools.js></script>
  12. <script>
  13. Tools.get('7.6/sort')
  14. close()
  15. </script>
复制代码
发表于 2015-3-18 00:29:37 | 显示全部楼层
或用 naturalSort 库:
  1. <!-- :
  2. @echo off

  3. pushd "G:\未标记\0004\002"

  4. for /f "delims=" %%i in ('dir/b/s *^|mshta "%~f0"') do (
  5.    echo %%i
  6.    rem 这里以输出为例,爱咋咋
  7. )
  8. pause & exit /b
  9. -->

  10. <script src=http://www.bathome.net/lib/diy/hide.js></script>
  11. <script src=http://www.bathome.net/lib/diy/WSH.js></script>
  12. <script src=http://www.bathome.net/lib/naturalSort.js></script>

  13. <script>
  14. var text =WSH.StdIn.ReadAll()
  15. var arr = text.split(/\r?\n/)
  16. arr = arr.sort(naturalSort)
  17. WSH.Echo(arr.join('\r\n'))
  18. </script>
复制代码
 楼主| 发表于 2015-3-20 00:00:30 | 显示全部楼层
或用 naturalSort 库:
CrLf 发表于 2015-3-18 00:29

谢谢
您的几段代码我都试了的   没有效果   您的代码咋用啊
发表于 2015-3-20 00:05:56 | 显示全部楼层
回复 9# 001011


    存成 bat
发表于 2015-3-20 11:25:17 | 显示全部楼层
回复 10# CrLf


   
 楼主| 发表于 2015-3-20 22:16:26 | 显示全部楼层
我是存成bat了啊  运行后没有什么效果啊
发表于 2015-3-20 22:29:22 | 显示全部楼层
回复 12# 001011


    代码仅示例排序,其中有一句 “rem 这里以输出为例,爱咋咋”,你用自己的代码把它替掉就行
发表于 2016-11-23 13:41:08 | 显示全部楼层
回复 12# 001011


   请问楼主最后是怎么解决这个问题的啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 17:04 , Processed in 0.025276 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表