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

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

[复制链接]
发表于 2018-9-19 16:24:40 | 显示全部楼层 |阅读模式
本帖最后由 xuezhou24 于 2018-9-20 14:29 编辑

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

评分

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

查看全部评分

发表于 2018-9-19 17:32:11 | 显示全部楼层
本帖最后由 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

评分

参与人数 1技术 +1 收起 理由
xuezhou24 + 1 乐于助人

查看全部评分

 楼主| 发表于 2018-9-19 17:46:01 | 显示全部楼层
回复 2# xczxczxcz


    谢谢你~但是运行之后有这么两个问题。第一,运行之后会弹出cmd窗口,里面显示了每个文件重命名之后的名字,但新名字并没有按照改名前的文件名顺序排列,好像是随机的顺序;第二,我在按任意键继续之后,cmd窗口自动关掉了,但是文件名没有任何变化,还是和原来一样。请问这两个问题应该怎么解决呢?谢谢!
发表于 2018-9-19 17:55:30 | 显示全部楼层
你不是自己写过了许多么,那应该看得明白,第4行去掉前面4个字不就出结果了。备份再试。
 楼主| 发表于 2018-9-19 19:58:40 | 显示全部楼层
回复 4# xczxczxcz


    啊啊谢谢,但是排序不对的问题我还没想出更好的办法,我现在把你的代码里的按扩展名排序改成按文件名排序,然后把每种扩展名都各写一条命令,目前好像是可以得到我想要的效果了,不知有没有更好的办法,要是能更简洁一些就更好了,不过现在这样也可以用,真的谢谢你啊!
发表于 2018-9-19 23:29:54 | 显示全部楼层
回复 5# xuezhou24


    把你修改之后的代码发出来看看是否可以优化
 楼主| 发表于 2018-9-20 13:37:52 | 显示全部楼层
回复 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
发表于 2018-9-20 14:12: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循环里面试试

评分

参与人数 1技术 +1 收起 理由
xuezhou24 + 1 乐于助人

查看全部评分

 楼主| 发表于 2018-9-20 14:28:52 | 显示全部楼层
回复 8# Batcher


    这个完全可以了,谢谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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