批处理将文件名(.txt或.jpg)中的(1)变为01,(2)变为02,...(10)变为10,......

知道一个比较笨的方法就是用dir命令获得文件名,再通过excel处理后得到想要的文件名,然后用ren命令批量处理。求大神给更简便的方法!!

@echo off
setlocal enabledelayedexpansion
dir /a-d /b *(?)*.txt *(?)*.jpg >temp.tmp
for /f %%i in ('type temp.tmp') do (
set itmp=%%i
set "itmp=!itmp:(=0!"
set "itmp=!itmp:)=!"
echo 修改文件名:%%i 为 !itmp!
ren %%i !itmp!
)
del temp.tmp
dir /a-d /b *(??)*.txt *(??)*.jpg >temp.tmp
for /f %%i in ('type temp.tmp') do (
set itmp=%%i
set "itmp=!itmp:(=!"
set "itmp=!itmp:)=!"
echo 修改文件名:%%i 为 !itmp!
ren %%i !itmp!
)
del temp.tmp

上面的代码完整复制为一个bat文件,放在要改名的文件相同的文件夹下运行即可,第一段改0-9,第二段改10-99

追问

谢谢!

我用了这个试了,不行啊?大神能再帮忙看下不

追答

文件名里有空格自己改一下批处理参数就好啊。。我这么回答还反扣10财富

改成下面的这些

@echo off
setlocal enabledelayedexpansion
dir /a-d /b *(?)*.txt *(?)*.jpg >temp.tmp
for /f "tokens=*" %%i in (temp.tmp) do (
set itmp=%%i
set "itmp=!itmp:(=0!"
set "itmp=!itmp:)=!"
echo 修改文件名:%%i 为 !itmp!
ren "%%i" "!itmp!"
)
del temp.tmp
dir /a-d /b *(??)*.txt *(??)*.jpg >temp.tmp
for /f "tokens=*" %%i in (temp.tmp) do (
set itmp=%%i
set "itmp=!itmp:(=!"
set "itmp=!itmp:)=!"
echo 修改文件名:"%%i" 为 "!itmp!"
ren "%%i" "!itmp!"
)
del temp.tmp

温馨提示:答案为网友推荐,仅供参考
相似回答