Board logo

标题: [文件操作] 【已解决】求助这种批量重命名的批处理文件要怎么写呢? [打印本页]

作者: xuezhou24    时间: 2018-9-19 16:24     标题: 【已解决】求助这种批量重命名的批处理文件要怎么写呢?

本帖最后由 xuezhou24 于 2018-9-20 14:29 编辑

我想把同一个文件夹里的不同文件类型分别按照文件名顺序重命名,重命名的样式是“文字前缀+三位数序号”,文字前缀是相同的,但每种文件类型要分别从001开始排序,比如说想要“aaa001.png","aaa001.jpg","aaa002.png","aaa002.jpg","aaa003.png","aaa003.jpg"……这样的结果,请问这样的批处理文件应该怎么写呢,我试了好多次都没有成功,要么顺序不对,第一个文件变成最后一个了,要么有的文件类型好使,有的文件类型没反应,有时候运行bat文件的时候就只是闪一下,文件名却一点儿反应也没有,不知这种批处理文件到底应该怎么写才可以呢?谢谢大家了!
作者: xczxczxcz    时间: 2018-9-19 17:32

本帖最后由 xczxczxcz 于 2018-9-19 17:58 编辑

@echo off & setlocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir/b/oe "%~dp0*.*"') do (
        if not defined %%~xa (set /a n=1001 & set "%%~xa=#") else set /a n+=1
        echo 正式操作删除这些红字ren "%%a" aaa!n:~-3!%%~xa
)
pause & exit
作者: xuezhou24    时间: 2018-9-19 17:46

回复 2# xczxczxcz


    谢谢你~但是运行之后有这么两个问题。第一,运行之后会弹出cmd窗口,里面显示了每个文件重命名之后的名字,但新名字并没有按照改名前的文件名顺序排列,好像是随机的顺序;第二,我在按任意键继续之后,cmd窗口自动关掉了,但是文件名没有任何变化,还是和原来一样。请问这两个问题应该怎么解决呢?谢谢!
作者: xczxczxcz    时间: 2018-9-19 17:55

你不是自己写过了许多么,那应该看得明白,第4行去掉前面4个字不就出结果了。备份再试。
作者: xuezhou24    时间: 2018-9-19 19:58

回复 4# xczxczxcz


    啊啊谢谢,但是排序不对的问题我还没想出更好的办法,我现在把你的代码里的按扩展名排序改成按文件名排序,然后把每种扩展名都各写一条命令,目前好像是可以得到我想要的效果了,不知有没有更好的办法,要是能更简洁一些就更好了,不过现在这样也可以用,真的谢谢你啊!
作者: Batcher    时间: 2018-9-19 23:29

回复 5# xuezhou24


    把你修改之后的代码发出来看看是否可以优化
作者: xuezhou24    时间: 2018-9-20 13:37

回复 6# Batcher

好的,我现在是这么做的,要是可以优化就更好了,不知是否有办法呢

    @echo off & setlocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir/b "%~dp0*.jpg"') do (
        if not defined %%~xa (set /a n=1001 & set "%%~xa=#") else set /a n+=1
        echo ren "%%a"aaa!n:~-3!%%~xa
)

↑ 我把每个扩展名都按上面写一遍

pause & exit
作者: Batcher    时间: 2018-9-20 14:12

回复 7# xuezhou24
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for %%i in (jpg png) do (
  4.     set %%i=1000
  5.     for /f "delims=" %%a in ('dir /b *.%%i') do (
  6.         set /a %%i+=1
  7.         set n=!%%i!
  8.         ren "%%a" "aaa!n:~-3!.%%i"
  9.     )
  10. )
复制代码
把不同的扩展名放到一个for循环里面试试
作者: xuezhou24    时间: 2018-9-20 14:28

回复 8# Batcher


    这个完全可以了,谢谢!!




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