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

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

本帖最后由 无情浪子哥 于 2021-5-8 15:43 编辑

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

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

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

批量命名文件夹内文件,但文件夹内文件名称不动,增加文件夹名称在文件前面

附件

https://wwa.lanzous.com/iIBvSovuova

TOP

本帖最后由 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
复制代码

TOP

回复 3# qixiaobin0715
一级文件夹可以使用,二级、三级无法使用

TOP

回复 4# 无情浪子哥
3楼代码已修改

TOP

回复 5# qixiaobin0715


    你好是可以使用了,但不能以一级文件夹名称命名所有文件了

TOP

回复 6# 无情浪子哥
那是你没说明白
bat放在一级文件夹内

TOP

回复 7# qixiaobin0715


    我有几百个一级文件夹,不能只放一个一级文件夹

TOP

  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

TOP

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

TOP

判断一下文件名,防止多次累加目录名
  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
复制代码
如无特别说明,代码测试环境均为 XP SP3

TOP

本帖最后由 无情浪子哥 于 2021-5-8 15:41 编辑

回复 11# cutebe

九楼运行没有反应、十一楼只能到二级,三级四级没有反应

TOP

回复 10# qixiaobin0715


    谢谢,可以使用了

TOP

返回列表