用某行内容替换特定字符
程序员文章站
2022-11-12 23:53:44
复制代码 代码如下:@echo off :: 用a.txt中的第一行字符,替换b.txt中的###字符. :: 再用a.txt中的第二行字符,替换b.txt中的@@@字符....
复制代码 代码如下:
@echo off
:: 用a.txt中的第一行字符,替换b.txt中的###字符.
:: 再用a.txt中的第二行字符,替换b.txt中的@@@字符.
:: ……
:: 如果a.txt第m行中含有在第n行中要替换的内容s(m<n),则会用s来替换b.txt中含有第m行中的匹配内容
:: 例如:假设a.txt中第1行含有在第二行中要替换的@@@,则会用@@@替换b.txt中含有第一行的@@@。
:: 使用格式:要用第m行的内容替换s,就在第m行的位置上加一句 call :_replace s
:: 如果在第n行上没有要替换的内容,第n行的位置加 set num=n
setlocal enabledelayedexpansion
set num=0
call :_replace ###
call :_replace @@@
set num=3
call :_replace $$$
exit
:_replace
set /a num+=1
set char=%1
for /f "tokens=1,2* delims=:" %%i in ('findstr /n . a.txt') do if %%i equ %num% set str=%%j
for /f "delims=" %%i in (b.txt) do (
set _str=%%i
set "_str=!_str:%char%=%str%!"
echo !_str!>>tmp.txt
)
move tmp.txt b.txt