欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用某行内容替换特定字符

程序员文章站 2022-05-15 11:26:00
复制代码 代码如下:@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