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

[文件操作] [已解决]BAT脚本怎样批量以文件夹名命名全部文件

[复制链接]
发表于 2021-5-7 10:58:04 | 显示全部楼层 |阅读模式
本帖最后由 无情浪子哥 于 2021-5-8 15:43 编辑

举例说明
原来:
文件夹名称:JC00101
文件夹内文件名称:房屋背面、房屋右侧、房屋正面

修改:
文件夹名称:JC00101
文件夹内文件名称:JC00101房屋背面、JC00101房屋右侧、JC00101房屋正面

这其中有子文件夹、子子文件夹

批量命名文件夹内文件,但文件夹内文件名称不动,增加文件夹名称在文件前面
 楼主| 发表于 2021-5-7 11:05:04 | 显示全部楼层

附件

https://wwa.lanzous.com/iIBvSovuova
发表于 2021-5-7 11:48:36 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-5-7 14:36 编辑

未测试
  1. @echo off
  2. for /f "delims=" %%a in ('dir /b /s /a-d') do (
  3.     for %%i in ("%%~dp0.") do ren "%%a" "%%~ni%%~nxa"
  4. )
  5. pause
复制代码
 楼主| 发表于 2021-5-7 14:30:07 | 显示全部楼层
回复 3# qixiaobin0715
一级文件夹可以使用,二级、三级无法使用
发表于 2021-5-7 14:37:23 | 显示全部楼层
回复 4# 无情浪子哥
3楼代码已修改
 楼主| 发表于 2021-5-7 14:45:29 | 显示全部楼层
回复 5# qixiaobin0715


    你好是可以使用了,但不能以一级文件夹名称命名所有文件了
发表于 2021-5-7 14:54:34 | 显示全部楼层
回复 6# 无情浪子哥
那是你没说明白
bat放在一级文件夹内
 楼主| 发表于 2021-5-7 14:56:05 | 显示全部楼层
回复 7# qixiaobin0715


    我有几百个一级文件夹,不能只放一个一级文件夹
发表于 2021-5-7 14:59:22 | 显示全部楼层
  1. @echo off
  2. setlocal enableDelayedExpansion

  3. set stra=t1
  4. call :f1 "%~1"

  5. goto :END

  6. :f1
  7. cd %1
  8. for /f "usebackq delims=" %%a in (` dir /b `) do (
  9.     echo "%%a" "%stra%%%a"
  10. )
  11. pause
  12. for /f "usebackq delims=" %%a in (` dir /b /ad `) do (
  13.     call :f1 "%%a"
  14. )
  15. cd ..
  16. goto :eof

  17. :END
  18. pause
复制代码
处理的文件夹t1,如果正确,把echo 改成ren
发表于 2021-5-7 15:33:31 | 显示全部楼层
回复 8# 无情浪子哥
  1. @echo off
  2. for /d %%a in (*) do (
  3. pushd %%a
  4. for /f "delims=" %%i in ('dir /b /s /a-d') do ren "%%i" "%%a%%~nxi"
  5. popd
  6. )
  7. pause
复制代码
发表于 2021-5-7 17:17:24 | 显示全部楼层
判断一下文件名,防止多次累加目录名
  1. ::添加目录名前缀
  2. @echo off
  3. cd/d%~dp0
  4. setlocal enableDelayedExpansion
  5. for /f "delims=" %%d in ('dir/s/b/ad')do (
  6.         pushd %%d
  7.         call :strLen dLen "%%~nxd"
  8.         for /f "delims=" %%f in ('dir/b/a-d')do (
  9.                 set "filename=%%f"
  10.                 for /f %%s in ("!dlen!")do if "!filename:~,%%s!" neq "%%~nxd" ren "%%f" "%%~nxd%%f"
  11.         )
  12.         popd
  13. )
  14. pause
  15. goto :eof

  16. :strLen len str ::code by plp626
  17. setlocal
  18. set "$=%~2#"
  19. set N=&for %%a in (4096 2048 1024 512 256 128 64 32 16)do if !$:~%%a!. NEQ . set/aN+=%%a&set $=!$:~%%a!
  20. set $=!$!fedcba9876543210&set/aN+=0x!$:~16,1!
  21. endlocal&set/a%1=%N%
  22. goto :eof
复制代码
 楼主| 发表于 2021-5-8 15:36:04 | 显示全部楼层
本帖最后由 无情浪子哥 于 2021-5-8 15:41 编辑

回复 11# cutebe

九楼运行没有反应、十一楼只能到二级,三级四级没有反应
 楼主| 发表于 2021-5-8 15:38:23 | 显示全部楼层
回复 10# qixiaobin0715


    谢谢,可以使用了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 16:03 , Processed in 0.020297 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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