标题: [文件操作] 【已解决】批处理如何按资源管理器的文件名递增的排序重命名文件 [打印本页]
作者: 001011 时间: 2015-3-14 16:20 标题: 【已解决】批处理如何按资源管理器的文件名递增的排序重命名文件
利用此代码对文件夹下的图片做重命名处理 但是顺序出现问题 麻烦各位老师帮忙纠正一下 选项
代码:- @echo off & setlocal enabledelayedexpansion
- pushd "G:\未标记\0004\002\"
- for /f "delims=" %%i in ('dir/b/s *.jpg') do (
- set str=%%~dpi&set str2=%%~nxi
- setlocal enabledelayedexpansion
- if not "!str!"=="!num!" (
- set "n=10001"
- ren "!str!*.jpg" "*.*.jpg"
- ) else set /a n+=1
- ren "!str!!str2!.jpg" "!n!.jpg"
- for %%a in (!n!) do endlocal&set n=%%a
- set "num=%%~dpi"
- )
- pause
复制代码
图片文件名格式
图中 红色部分 为什么在命名后跑到后面去了
作者: DAIC 时间: 2015-3-14 17:17
截图是改名之前的还是改名之后的?
改名的规律是什么?
作者: 001011 时间: 2015-3-14 17:18
截图是改名之前的还是改名之后的?
改名的规律是什么?
DAIC 发表于 2015-3-14 17:17
截图是改名之前
作者: tigerpower 时间: 2015-3-16 15:21
本帖最后由 tigerpower 于 2015-7-4 07:31 编辑
dir默认ASCII排序,非数字大小排序
作者: 001011 时间: 2015-3-17 22:42
回复 4# tigerpower
非常感谢 完美的解决了我的问题
作者: CrLf 时间: 2015-3-18 00:16
本帖最后由 CrLf 于 2015-3-18 00:30 编辑
- 1>1/* :
- @echo off
- pushd "G:\未标记\0004\002\"
- for /f "delims=" %%i in ('dir/b/s *.jpg ^| cscript -nologo -e:jscript "%~0" \d+') do (
- echo %%i
- rem 这里以输出为例,爱咋咋
- )
-
- pause & eixt /b */
-
- var re_match = new RegExp(WSH.Arguments(0)+'|.','g')
- var re_test = new RegExp(WSH.Arguments(0),'g')
-
- var text = WScript.StdIn.ReadAll().split(/[\r\n]+/)
-
- for(var i=0;i<text.length;i++){
- var match = text[i].replace(/.*[\\\/]/,'').match(re_match)
- if(match){
- for(var j=0;j<match.length;j++)
- match[j] = re_test.test(match[j])?1*match[j]:match[j]
- }
- text[i] = {string:text[i],array:match?match:[]}
- }
-
- text = text.sort(function(a,b){
- maxlength = Math.max(a.array.length,b.array.length)
- for(var i=0;i<maxlength;i++){
- if(a.array[i]<b.array[i])return -1
- if(a.array[i]>b.array[i])return 1
- }
- return a.array.length-b.array.length
- })
-
- Object.prototype.toString=function(){return this.string}
- WSH.Echo(text.join('\r\n'))
复制代码
作者: CrLf 时间: 2015-3-18 00:19
本帖最后由 CrLf 于 2015-3-20 22:18 编辑
也可以用高版本 gnu sort 的 -V 开关- <!-- :
- @echo off
-
- pushd "G:\未标记\0004\002\"
- mshta "%~f0"
-
- for /f "delims=" %%i in ('dir/b/s *.jpg ^| sort -V') do (
- echo %%i
- rem 这里以输出为例,爱咋咋
- )
- pause & exit /b
- -->
-
- <script src=http://www.bathome.net/lib/diy/Tools.js></script>
- <script>
- Tools.get('7.6/sort')
- close()
- </script>
复制代码
作者: CrLf 时间: 2015-3-18 00:29
或用 naturalSort 库:- <!-- :
- @echo off
-
- pushd "G:\未标记\0004\002\"
-
- for /f "delims=" %%i in ('dir/b/s *^|mshta "%~f0"') do (
- echo %%i
- rem 这里以输出为例,爱咋咋
- )
- pause & exit /b
- -->
-
- <script src=http://www.bathome.net/lib/diy/hide.js></script>
- <script src=http://www.bathome.net/lib/diy/WSH.js></script>
- <script src=http://www.bathome.net/lib/naturalSort.js></script>
-
- <script>
- var text =WSH.StdIn.ReadAll()
- var arr = text.split(/\r?\n/)
- arr = arr.sort(naturalSort)
- WSH.Echo(arr.join('\r\n'))
- </script>
复制代码
作者: 001011 时间: 2015-3-20 00:00
或用 naturalSort 库:
CrLf 发表于 2015-3-18 00:29
谢谢
您的几段代码我都试了的 没有效果 您的代码咋用啊
作者: CrLf 时间: 2015-3-20 00:05
回复 9# 001011
存成 bat
作者: 523066680 时间: 2015-3-20 11:25
回复 10# CrLf
作者: 001011 时间: 2015-3-20 22:16
我是存成bat了啊 运行后没有什么效果啊
作者: CrLf 时间: 2015-3-20 22:29
回复 12# 001011
代码仅示例排序,其中有一句 “rem 这里以输出为例,爱咋咋”,你用自己的代码把它替掉就行
作者: tracepro 时间: 2016-11-23 13:41
回复 12# 001011
请问楼主最后是怎么解决这个问题的啊?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |