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

[文件操作] 批处理怎样给文件夹前加上层文件夹名?

在当前目录名为【测试】,下有一个名为【MP3】的文件夹,想在运行代码时,在【MP3】文件夹的文件名前加上当前目录名,改后为【测试MP3】。


说明:
1、只处理文件名为【MP3】的文件夹,对于文件夹名里包含MP3的文件夹不处理。
2、只插入【MP3】文件夹所在上层文件夹的文件名
3、支持子目录,多层目录遵循上述规则,同时处理。


辛苦了 谢谢

回复 7# Five66


    感谢

TOP

目录结构:
测试\a\MP3\MP3\b\MP3\c

放在测试文件夹里运行的结果:
测试\a\aMP3\MP3MP3\b\bMP3\c
  1. @echo off
  2. set "name=mp3"
  3. set n=6144
  4. set m=%n%
  5. for /r /d %%i in (mp?) do (
  6. set p=%%i
  7. call set "_%%n%%=%%p%%"
  8. set /a n-=1
  9. )
  10. for /l %%i in (%n%,1,%m%) do (
  11. set vn=%%i
  12. call :aaa
  13. )
  14. echo,&pause&exit/b
  15. :aaa
  16. setlocal enabledelayedexpansion
  17. if /i "!_%vn%:~-4!" == "\!name!" (
  18. for /f "delims=" %%o in ("!_%vn%:~0,-4!") do set dadada=%%~no
  19. echo,&echo,rename "!_%vn%!" to "!dadada!!_%vn%:~-3!"
  20. rename "!_%vn%!" "!dadada!!_%vn%:~-3!"
  21. )
  22. endlocal
  23. goto :eof
复制代码

TOP

回复 5# qd2024
如果重命名的话,再排个序吧 修改为
  1. dir /ad /s /b^|findstr /ie "\\mp3"^|sort /r
复制代码

TOP

回复 2# terse


    我试试,辛苦了,感谢

TOP

回复 3# Batcher

感谢提醒,这种情况一般不会出现 ,如果就先处理就后一层目录里,如目录结构为1\2\3\4,先处理,按4、3、2、1顺序处理
最后的结果是
测试\测试MP3\MP3MP3


再如,如果目录结构为  测试\1MP3\2MP3\3MP3
BAT处理后的目录结构为  测试\测试1MP3\1MP32MP3\2MP33MP3

1MP3、2MP3、3MP3,只是为了说明问题,实际中不含前面的序号

辛苦,谢谢

TOP

回复 1# qd2024


测试\MP3\MP3
这种情况需要怎么处理呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. for /f "delims=" %%i in ('dir /ad /s /b^|findstr /ie "\\mp3"') do (
  3.      for %%j in ("%%~fi\..") do echo "%%~nj%%~ni"
  4. )
  5. pause
复制代码

TOP

返回列表