标题: [文件操作] 批处理如何实现文件批量命名? [打印本页]
作者: kmustwxw 时间: 2014-11-27 11:15 标题: 批处理如何实现文件批量命名?
有大量如下命名方式的图片:1.jpg 2.jpg 3.jpg 4.jpg …… 9.jpg 10.jpg ……99.jpg 100.jpg……要把命名改为:001.jpg 002.jpg 003.jpg 004.jpg …… 009.jpg 010.jpg ……099.jpg 100.jpg…如果最大是三位数就在前面补两个0,如果是四位数就补三个0. 如何写代码。
作者: DAIC 时间: 2014-11-27 16:10
- @echo off
- setlocal enabledelayedexpansion
- set max=0
- set n=0
- for %%i in (*.jpg) do (
- set n=%%~ni
- if !n! gtr !max! (
- set max=!n!
- )
- )
-
- set len=0
- for /f "skip=1 delims=:" %%i in ('^(echo "%max%"^&echo.^)^|findstr /o ".*"') do (
- set /a len=%%i-5
- )
-
- set pre=1
- for /l %%i in (1,1,%len%) do (
- set /a pre*=10
- )
-
- for /f %%i in ('dir /b *.jpg') do (
- set n=%pre%%%~ni
- ren %%i !n:~-%len%!.jpg
- )
复制代码
作者: kmustwxw 时间: 2014-11-28 08:57
太感谢你了,这段代码能满足要求,我还想请教一下:就是还有一些:组合1.jpg 组合2.jpg 组合3.jpg ……就是在图片的名字前都有“图片”两个字,要如何改下代码呢?谢谢指教。
作者: DAIC 时间: 2014-11-28 09:05
回复 3# kmustwxw
到底是“组合”还是“图片”?
作者: kmustwxw 时间: 2014-11-28 10:04
不好意思,是组合。谢谢
作者: DAIC 时间: 2014-11-28 10:47
回复 5# kmustwxw - @echo off
- setlocal enabledelayedexpansion
- set max=0
- set n=0
- for %%i in (*.jpg) do (
- set n=%%~ni
- set n=!n:组合=!
- if !n! gtr !max! (
- set max=!n!
- )
- )
-
- set len=0
- for /f "skip=1 delims=:" %%i in ('^(echo "%max%"^&echo.^)^|findstr /o ".*"') do (
- set /a len=%%i-5
- )
-
- set pre=1
- for /l %%i in (1,1,%len%) do (
- set /a pre*=10
- )
-
- for /f %%i in ('dir /b *.jpg') do (
- set n=%pre%%%~ni
- set n=!n:组合=!
- ren %%i !n:~-%len%!.jpg
- )
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |