标题: [文件操作] [已解决]BAT脚本怎样批量以文件夹名命名全部文件 [打印本页]
作者: 无情浪子哥 时间: 2021-5-7 10:58 标题: [已解决]BAT脚本怎样批量以文件夹名命名全部文件
本帖最后由 无情浪子哥 于 2021-5-8 15:43 编辑
举例说明
原来:
文件夹名称:JC00101
文件夹内文件名称:房屋背面、房屋右侧、房屋正面
修改:
文件夹名称:JC00101
文件夹内文件名称:JC00101房屋背面、JC00101房屋右侧、JC00101房屋正面
这其中有子文件夹、子子文件夹
批量命名文件夹内文件,但文件夹内文件名称不动,增加文件夹名称在文件前面
作者: 无情浪子哥 时间: 2021-5-7 11:05 标题: 附件
https://wwa.lanzous.com/iIBvSovuova
作者: qixiaobin0715 时间: 2021-5-7 11:48
本帖最后由 qixiaobin0715 于 2021-5-7 14:36 编辑
未测试- @echo off
- for /f "delims=" %%a in ('dir /b /s /a-d') do (
- for %%i in ("%%~dp0.") do ren "%%a" "%%~ni%%~nxa"
- )
- pause
复制代码
作者: 无情浪子哥 时间: 2021-5-7 14:30
回复 3# qixiaobin0715
一级文件夹可以使用,二级、三级无法使用
作者: qixiaobin0715 时间: 2021-5-7 14:37
回复 4# 无情浪子哥
3楼代码已修改
作者: 无情浪子哥 时间: 2021-5-7 14:45
回复 5# qixiaobin0715
你好是可以使用了,但不能以一级文件夹名称命名所有文件了
作者: qixiaobin0715 时间: 2021-5-7 14:54
回复 6# 无情浪子哥
那是你没说明白
bat放在一级文件夹内
作者: 无情浪子哥 时间: 2021-5-7 14:56
回复 7# qixiaobin0715
我有几百个一级文件夹,不能只放一个一级文件夹
作者: newswan 时间: 2021-5-7 14:59
- @echo off
- setlocal enableDelayedExpansion
-
- set stra=t1
- call :f1 "%~1"
-
- goto :END
-
- :f1
- cd %1
- for /f "usebackq delims=" %%a in (` dir /b `) do (
- echo "%%a" "%stra%%%a"
- )
- pause
- for /f "usebackq delims=" %%a in (` dir /b /ad `) do (
- call :f1 "%%a"
- )
- cd ..
- goto :eof
-
- :END
- pause
复制代码
处理的文件夹t1,如果正确,把echo 改成ren
作者: qixiaobin0715 时间: 2021-5-7 15:33
回复 8# 无情浪子哥 - @echo off
- for /d %%a in (*) do (
- pushd %%a
- for /f "delims=" %%i in ('dir /b /s /a-d') do ren "%%i" "%%a%%~nxi"
- popd
- )
- pause
复制代码
作者: cutebe 时间: 2021-5-7 17:17
判断一下文件名,防止多次累加目录名- ::添加目录名前缀
- @echo off
- cd/d%~dp0
- setlocal enableDelayedExpansion
- for /f "delims=" %%d in ('dir/s/b/ad')do (
- pushd %%d
- call :strLen dLen "%%~nxd"
- for /f "delims=" %%f in ('dir/b/a-d')do (
- set "filename=%%f"
- for /f %%s in ("!dlen!")do if "!filename:~,%%s!" neq "%%~nxd" ren "%%f" "%%~nxd%%f"
- )
- popd
- )
- pause
- goto :eof
-
- :strLen len str ::code by plp626
- setlocal
- set "$=%~2#"
- set N=&for %%a in (4096 2048 1024 512 256 128 64 32 16)do if !$:~%%a!. NEQ . set/aN+=%%a&set $=!$:~%%a!
- set $=!$!fedcba9876543210&set/aN+=0x!$:~16,1!
- endlocal&set/a%1=%N%
- goto :eof
复制代码
作者: 无情浪子哥 时间: 2021-5-8 15:36
本帖最后由 无情浪子哥 于 2021-5-8 15:41 编辑
回复 11# cutebe
九楼运行没有反应、十一楼只能到二级,三级四级没有反应
作者: 无情浪子哥 时间: 2021-5-8 15:38
回复 10# qixiaobin0715
谢谢,可以使用了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |