[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 8# Batcher


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

TOP

回复 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

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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

TOP

回复 5# xuezhou24


    把你修改之后的代码发出来看看是否可以优化
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# xczxczxcz


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

TOP

你不是自己写过了许多么,那应该看得明白,第4行去掉前面4个字不就出结果了。备份再试。

TOP

回复 2# xczxczxcz


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

TOP

本帖最后由 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

评分人数

TOP

返回列表