Board logo

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

作者: crownking1983    时间: 2015-3-25 20: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……
统一变为以各自文件夹的文件名为前缀加上四位数字按原文件名排序重新编号重命名。
作者: pcl_test    时间: 2015-3-25 21:50

回复 1# crownking1983
AAA、BBB、CCC是否在同级目录里?
作者: terse    时间: 2015-3-25 22:11

  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
复制代码

作者: crownking1983    时间: 2015-3-25 23:07

本帖最后由 crownking1983 于 2015-3-25 23:22 编辑

回复 3# terse


    三楼的大哥太神了!非常感谢你!
作者: crownking1983    时间: 2015-3-29 00:09

回复 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,那几千个文件夹工作量就海了去了,而且有的文件夹文件好几百个,是三位数的更乱。请问这种情况如何在批处理命令里解决?
作者: wazt741521    时间: 2018-5-2 14:29

回复 5# crownking1983


   推荐Better file rename可批量加0
作者: tigerpower    时间: 2018-5-2 19:35

5楼和1楼的是两个不同的问题。
数字文件名加前导零,是个常见问题,可用powershell
  1. powershell -c "ls *.jpg|ren -new {$_.Name.PadLeft(8,'0')}"
复制代码

作者: fashionben    时间: 2018-5-14 21:57

哈哈哈。又有人碰到和我一样到问题。猿粪
作者: fashionben    时间: 2018-5-14 22:08

贴出以前从大神求得代码
看看有何不同?

@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
作者: fashionben    时间: 2018-5-14 22:27

5楼和1楼的是两个不同的问题。
数字文件名加前导零,是个常见问题,可用powershell
tigerpower 发表于 2018-5-2 19:35



请问, 如何批量给所有的文件夹里的文件批量+前导零?
文件夹A  文件夹B 文件夹C.....文件夹XXX
这些文件夹全部在同一个目录下
作者: tigerpower    时间: 2018-5-16 06:20

回复 10# fashionben
  1. powershell -c "ls -R -file|ren -new {$_.Name.PadLeft($_.Name.Length+1,'0')}"
复制代码

作者: grace_11    时间: 2018-6-15 14:15

回复 5# crownking1983


    请问下这个问题解决了吗?是怎么处理的?麻烦分享下
作者: luckcsz    时间: 2018-7-16 11:30

本帖最后由 luckcsz 于 2018-7-16 12:11 编辑

回复 3# terse

请问下有多层文件夹下及文件哪里需要修改~!
作者: a934990825    时间: 2019-1-26 09:54

如何不加所在文件夹名呢




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