Board logo

标题: [文件操作] 求助大神们批处理给子文件夹加上文件夹的前缀名 [打印本页]

作者: wamgle    时间: 2018-2-2 12:41     标题: 求助大神们批处理给子文件夹加上文件夹的前缀名

比如我的一级目录有a,b,c三个文件夹
a、b、c每个里边有三个子文件夹,攻击,行走,站立
需要将每个子文件夹的名字替换成英文并加上上级文件夹的前缀,
如a文件夹下三个子文件夹名字会变成: a_attack,a_walk,a_stand
如b文件夹下三个子文件夹名字会变成:  b_attack,b_walk,b_stand
如c文件夹下三个子文件夹名字会变成:  c_attack,c_walk,c_stand
一级目录下可能不止abc三个文件夹,还可能更多!!
作者: yhcfsr    时间: 2018-2-2 15:55

本帖最后由 yhcfsr 于 2018-2-2 15:57 编辑
  1. @echo off
  2. set "SourDir=E:\DCOPY\test"
  3. cd /d "%SourDir%"
  4. for /d  %%a in (*) do (
  5. pushd "%%a"
  6. for /d %%b in (*) do ren "%%~fb" "%%a_%%b"
  7. popd
  8. )
  9. pause&exit
复制代码

作者: 慕夜蓝化    时间: 2018-2-3 12:53

  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. :: 生成
  4. for %%a in (a b c) do @md f:\ks\%%a
  5. for /f "delims=" %%i in ('dir /b/l/ad f:\ks\*') do (
  6. for %%a in (a b c) do @md f:\ks\%%i\%%a
  7. )
  8. :: 更改
  9. SET "ph=f:\ks"
  10. for /f "delims=" %%i in ('dir /b/l/ad %ph%\*') do (
  11. call :label_for "%%i"
  12. )
  13. pause&exit
  14. :label_FOR
  15. set/a n=0
  16. set/a c=0
  17. for /f %%a in ('dir /b/l/ad "%ph%\%~1"') do (
  18. set/a c+=1
  19. for %%i in ("attack" "walk" "stand") do (
  20. set/a n+=1
  21. if !n! equ !c! @REN "%ph%\%~1\%%a" "%~1_%%~i"
  22. )
  23. set/a n=0
  24. )
  25. goto :eof
复制代码





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