实现多层级批量替换文件(夹)名称指定内容

说明

功能实现使用的是Windows的Bat命令方式。没有使用Python的方式去做,Bat是现学的,语法上不是很熟悉,应该有更简单的方式。

刚开始想在网上找个现成的,结果发现都只有在当前曾经操作,对于嵌套的就没办法了。

后来在使用嵌套的时候,发现ren命令在替换的时候,后面的target的部分不能使用目录层级方式。这个地方没有找到合适的方式,使用tokens写死了。

代码

说明:tokens=6,7 这个地方是写死的,没有使用循环的方式去获取最后一个下标的内容。语法不熟悉。后续熟悉的时候再改过来

@echo off

Setlocal Enabledelayedexpansion
::指定起始文件夹
set DIR="%cd%"
echo DIR=%DIR%

::要替换的部分
set "str=需要替换的内容"

:: 参数 /R 表示需要遍历子文件夹,去掉表示不遍历子文件夹
:: %%f 是一个变量,类似于迭代器,但是这个变量只能由一个字母组成,前面带上%%
:: 括号中是通配符,可以指定后缀名,*.*表示所有文件


for /R %DIR% %%i in (*.*) do (

    ::tokens=6,7 这个地方是写死的,没有使用循环的方式去判断最后一个斜杠
	for /f "tokens=6,7 delims=\" %%a in ("%%i") do (
	
		:: set "var=%%a" ren "%%i" "!var:%str%=!"	
		set "var=%%a" & ren   "%%i" "!var:%str%=!"			
	)

)

for /f "delims=" %%i in ('dir /b *.*') do (
	set "vars=%%i" & ren "%%i" "!vars:%str%=!")
	
pause>nul
发布了127 篇原创文章 · 获赞 132 · 访问量 366万+

猜你喜欢

转载自blog.csdn.net/m290345792/article/details/104583054