标题: [文件操作] 批处理怎样给文件夹前加上层文件夹名? [打印本页]
作者: qd2024 时间: 2023-11-7 07:38 标题: 批处理怎样给文件夹前加上层文件夹名?
在当前目录名为【测试】,下有一个名为【MP3】的文件夹,想在运行代码时,在【MP3】文件夹的文件名前加上当前目录名,改后为【测试MP3】。
说明:
1、只处理文件名为【MP3】的文件夹,对于文件夹名里包含MP3的文件夹不处理。
2、只插入【MP3】文件夹所在上层文件夹的文件名
3、支持子目录,多层目录遵循上述规则,同时处理。
辛苦了 谢谢
作者: terse 时间: 2023-11-7 08:31
- @echo off
- for /f "delims=" %%i in ('dir /ad /s /b^|findstr /ie "\\mp3"') do (
- for %%j in ("%%~fi\..") do echo "%%~nj%%~ni"
- )
- pause
复制代码
作者: Batcher 时间: 2023-11-7 09:57
回复 1# qd2024
测试\MP3\MP3
这种情况需要怎么处理呢?
作者: qd2024 时间: 2023-11-7 11:33
回复 3# Batcher
感谢提醒,这种情况一般不会出现 ,如果就先处理就后一层目录里,如目录结构为1\2\3\4,先处理,按4、3、2、1顺序处理
最后的结果是
测试\测试MP3\MP3MP3
再如,如果目录结构为 测试\1MP3\2MP3\3MP3
BAT处理后的目录结构为 测试\测试1MP3\1MP32MP3\2MP33MP3
1MP3、2MP3、3MP3,只是为了说明问题,实际中不含前面的序号
辛苦,谢谢
作者: qd2024 时间: 2023-11-7 11:34
回复 2# terse
我试试,辛苦了,感谢
作者: terse 时间: 2023-11-7 13:00
回复 5# qd2024
如果重命名的话,再排个序吧 修改为- dir /ad /s /b^|findstr /ie "\\mp3"^|sort /r
复制代码
作者: Five66 时间: 2023-11-7 17:46
目录结构:
测试\a\MP3\MP3\b\MP3\c
放在测试文件夹里运行的结果:
测试\a\aMP3\MP3MP3\b\bMP3\c- @echo off
-
- set "name=mp3"
- set n=6144
-
- set m=%n%
- for /r /d %%i in (mp?) do (
- set p=%%i
- call set "_%%n%%=%%p%%"
- set /a n-=1
- )
-
- for /l %%i in (%n%,1,%m%) do (
- set vn=%%i
- call :aaa
- )
-
- echo,&pause&exit/b
-
- :aaa
- setlocal enabledelayedexpansion
- if /i "!_%vn%:~-4!" == "\!name!" (
- for /f "delims=" %%o in ("!_%vn%:~0,-4!") do set dadada=%%~no
- echo,&echo,rename "!_%vn%!" to "!dadada!!_%vn%:~-3!"
- rename "!_%vn%!" "!dadada!!_%vn%:~-3!"
- )
- endlocal
- goto :eof
复制代码
作者: qd2024 时间: 2023-11-17 06:55
回复 7# Five66
感谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |