實現多層級批量替換文件(夾)名稱指定內容

說明

功能實現使用的是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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章