批处理 - 替换文本内容 为 文件名

来源:百度知道 编辑:UC知道 时间:2024/05/14 18:38:25
-------文件内容--------------
TITLE "taitoru"
FILE "需要替换的内容" WAVE
TRACK 01 AUDIO
INDEX 01 00:00:00
-----------------------------
把“需要替换的内容”改成“文件名”
如果文件名是 111.222.txt 那就改成 FILE "111.222" WAVE
如果文件名是 333.444.txt 那就改成 FILE "333.444" WAVE

文件名不带扩展名。部分文件名有空格 和感叹号!。

也就是把有 [ " WAVE ] 这一行替换成 [ FILE "文件名" WAVE ]

set var=!var:^*^" WAVE=ooxx!
set var=!var:ooxx=FILE ^"%%~ni^" WAVE!

::一次定向输出但有临时文件版
@echo off
setlocal enabledelayedexpansion
echo 处理中. . .
for %%a in (*.txt) do call :Change "%%~a"
echo 全部处理完毕!
pause
goto :eof

:Change
(for /f "usebackq delims=" %%i in (%1) do (
set v=%%i
set v=!v:"=“!
if "!v:~-6!"=="“ WAVE" (echo FILE "%~n1" WAVE) else echo %%i
))>%1_
move %1_ %1
echo %1 . . . OK !
goto :eof

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::多次定向输出但无临时文件版
@echo off
setlocal enabledelayedexpansion
echo 处理中. . .
for %%a in (*.txt) do call :Change "%%~a"
echo 全部处理完毕!
pause
goto :eof

:Change
set f=
for /f "usebackq delims=" %%i in (%1) do (
if not defined f cd.>%1 & set f=1
set v=%%i
set v=!v:"=“!
if "!v:~-6!"=="“ WAVE" (echo FILE "%~n1&qu