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

[文件操作] [已解决]如何将多个子文件夹里的文件以所在的文件夹名和四位递增数字的方式重命名

[复制链接]
发表于 2015-3-25 20:40:40 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2018-5-14 22:43 编辑

求一个简单的bat批处理命令,实现批量按文件夹名为前缀重命名文件夹内的文件。实例如下——

文件夹 AAA 里有 12589.jpg 43698.jpg 71475.jpg ……
文件夹 BBB 里有 25478.jpg 56547.jpg 94756.jpg……
文件夹 CCC 里有 648528.jpg 87456.jpg 91257.jpg……等等N个文件夹 每个文件夹里有N个无规律的图片文件

现求一个bat批处理命令,运行后变成以下效果:
文件夹 AAA 里有 AAA0001.jpg AAA0002.jpg AAA0003.jpg ……
文件夹 BBB 里有 BBB0001.jpg BBB0002.jpg BBB0003.jpg……
文件夹 CCC 里有 CCC0001.jpg CCC0002.jpg CCC0003.jpg……
统一变为以各自文件夹的文件名为前缀加上四位数字按原文件名排序重新编号重命名。

评分

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

查看全部评分

发表于 2015-3-25 21:50:34 | 显示全部楼层
回复 1# crownking1983
AAA、BBB、CCC是否在同级目录里?
发表于 2015-3-25 22:11:31 | 显示全部楼层
  1. @echo off & setlocal enabledelayedexpansion
  2. for /d %%a in (*) do (
  3.     set n=10000
  4.     for /f "delims=" %%i in ('dir /b /a-d "%%a\*.*"') do (
  5.         set /a n+=1
  6.         ren "%%a\%%i" "%%a!n:~1!%%~xi"
  7.     )
  8. )
  9. pause
复制代码

评分

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

查看全部评分

 楼主| 发表于 2015-3-25 23:07:00 | 显示全部楼层
本帖最后由 crownking1983 于 2015-3-25 23:22 编辑

回复 3# terse


    三楼的大哥太神了!非常感谢你!
 楼主| 发表于 2015-3-29 00:09:30 | 显示全部楼层
回复 3# terse


    在实际操作运用时,出现一个问题。我有一个文件夹里面的文件名是 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg 8.jpg 9.jpg 10.jpg 11.jpg 12.jpg 13.jpg 14.jpg 共14个文件,在WIN7系统下排序正常。
经过这个批处理命令处理后,1.jpg变为 0001.jpg  10.jpg变为0002.jpg  11.jpg变为0003.jpg 12.jpg变为0004.jpg 13.jpg变为0005.jpg 14.jpg变为0006.jpg 2.jpg变为0007.jpg 3.jpg变为0008.jpg ………………
完全与想要处理的结果排序不同,如果处理前要将个位数的文件手动加上0,那几千个文件夹工作量就海了去了,而且有的文件夹文件好几百个,是三位数的更乱。请问这种情况如何在批处理命令里解决?
发表于 2018-5-2 14:29:37 | 显示全部楼层
回复 5# crownking1983


   推荐Better file rename可批量加0
发表于 2018-5-2 19:35:49 | 显示全部楼层
5楼和1楼的是两个不同的问题。
数字文件名加前导零,是个常见问题,可用powershell
  1. powershell -c "ls *.jpg|ren -new {$_.Name.PadLeft(8,'0')}"
复制代码
发表于 2018-5-14 21:57:44 | 显示全部楼层
哈哈哈。又有人碰到和我一样到问题。猿粪
发表于 2018-5-14 22:08:09 | 显示全部楼层
贴出以前从大神求得代码
看看有何不同?

@echo off & setlocal enabledelayedexpansion
pushd "D:\Test\"
for /d %%a in (*) do (
    set n=1000
    for /f "delims=" %%b in ('dir /a-d /b /s "%%a\*.jpg"') do (
        set /a n+=1 & move "%%b" "%%a\%%a_!n:~1!%%~xb"
    )
)

pause
发表于 2018-5-14 22:27:56 | 显示全部楼层
5楼和1楼的是两个不同的问题。
数字文件名加前导零,是个常见问题,可用powershell
tigerpower 发表于 2018-5-2 19:35



请问, 如何批量给所有的文件夹里的文件批量+前导零?
文件夹A  文件夹B 文件夹C.....文件夹XXX
这些文件夹全部在同一个目录下
发表于 2018-5-16 06:20:56 | 显示全部楼层
回复 10# fashionben
  1. powershell -c "ls -R -file|ren -new {$_.Name.PadLeft($_.Name.Length+1,'0')}"
复制代码
发表于 2018-6-15 14:15:52 | 显示全部楼层
回复 5# crownking1983


    请问下这个问题解决了吗?是怎么处理的?麻烦分享下
发表于 2018-7-16 11:30:38 | 显示全部楼层
本帖最后由 luckcsz 于 2018-7-16 12:11 编辑

回复 3# terse

请问下有多层文件夹下及文件哪里需要修改~!
发表于 2019-1-26 09:54:56 | 显示全部楼层
如何不加所在文件夹名呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 22:46 , Processed in 0.021373 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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