批处理如何实现指定文件中字符替换成第二文本文件中的指定字符. 10
如:A.txt中查找第一个字符串1234,发现后用B.txt中的第一行字符串替换。以次类推A.txt查找到第二个字符串1234,B.TXT第二行字符串替换。...
如:A.txt中查找第一个字符串1234,发现后用B.txt中的第一行字符串替换。以次类推A.txt查找到第二个字符串1234,B.TXT第二行字符串替换。
展开
展开全部
把B.txt的字符串先赋值变量后,替换相应的关键字
@echo off& setlocal enabledelayedexpansion
for /f "delims=" %%1 in (B.txt)do (set /a snow+=1&& set snow!snow!=%%1)
(for /f "delims=" %%1 in (A.txt)do echo %%1| findstr "1234">nul&& (set /a wind+=1
set wind!wind!=%%1&& call call echo %%%%wind!wind!:1234=%%snow!wind!%%%%%%)|| echo %%1)>wind.txt
======================================================================
楼上的朋友-biatxue 说的是,确实没有考虑到一行有多个1234
在这种情况下替换,批处理比较麻烦,改了个VBS的。
set fso = createobject("scripting.filesystemobject")
set ofrt = fso.opentextfile("wind.txt",8,true)
set ofrd2 = fso.opentextfile("B.txt",1): dim B(9999)
do until ofrd2.atendofstream
i = i + 1: B(i) = ofrd2.readline: loop
set ofrd1 = fso.opentextfile("A.txt",1)
do until ofrd1.atendofstream
snow = ofrd1.readline
if instr(snow,"1234") > 0 then
while instr(snow,"1234") > 0
k = k + 1: snow = replace(snow,"1234",B(k),1,1)
wend: ofrt.writeline snow
else: ofrt.writeline snow
end if: loop
@echo off& setlocal enabledelayedexpansion
for /f "delims=" %%1 in (B.txt)do (set /a snow+=1&& set snow!snow!=%%1)
(for /f "delims=" %%1 in (A.txt)do echo %%1| findstr "1234">nul&& (set /a wind+=1
set wind!wind!=%%1&& call call echo %%%%wind!wind!:1234=%%snow!wind!%%%%%%)|| echo %%1)>wind.txt
======================================================================
楼上的朋友-biatxue 说的是,确实没有考虑到一行有多个1234
在这种情况下替换,批处理比较麻烦,改了个VBS的。
set fso = createobject("scripting.filesystemobject")
set ofrt = fso.opentextfile("wind.txt",8,true)
set ofrd2 = fso.opentextfile("B.txt",1): dim B(9999)
do until ofrd2.atendofstream
i = i + 1: B(i) = ofrd2.readline: loop
set ofrd1 = fso.opentextfile("A.txt",1)
do until ofrd1.atendofstream
snow = ofrd1.readline
if instr(snow,"1234") > 0 then
while instr(snow,"1234") > 0
k = k + 1: snow = replace(snow,"1234",B(k),1,1)
wend: ofrt.writeline snow
else: ofrt.writeline snow
end if: loop
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用软件Replace Pioneer完成,很容易。
第一步 把B.TXT导入系统
1. ctrl-o打开b.txt
2. ctrl-h打开replace窗口
* 把Replace Unit选成Line
* 选中Advanced选项页
在Run following at the beginning of replace 填clear_values_all()
在Run following for each matched unit 填
set_value($line_no,$match)
3. 点击Replace
第二步 对A.TXT做替换
1. ctrl-o打开a.txt
2. ctrl-h打开replace窗口
* 在Search for Pattern输入1234
* 在Replace with Pattern输入get_value($word_no)
3. 点击Replace完成,ctrl-s存盘。
第一步 把B.TXT导入系统
1. ctrl-o打开b.txt
2. ctrl-h打开replace窗口
* 把Replace Unit选成Line
* 选中Advanced选项页
在Run following at the beginning of replace 填clear_values_all()
在Run following for each matched unit 填
set_value($line_no,$match)
3. 点击Replace
第二步 对A.TXT做替换
1. ctrl-o打开a.txt
2. ctrl-h打开replace窗口
* 在Search for Pattern输入1234
* 在Replace with Pattern输入get_value($word_no)
3. 点击Replace完成,ctrl-s存盘。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
千羽之城的批好像没反应啊,09cdy的批想得不全面啊,同一行中出现几个1234的话替换出来的全是同一列的比如A.txt中格式为:
1234
aaaaasdfadsfdsa123sdafasdfqwe1234qwerrewqrsd1234qwerwqerewq1234as 1234 123 4
1234
B.txt格式:
壹贰叁肆
伍陆柒捌
玖拾零壹
壹贰叁肆
伍陆柒捌
玖拾零壹
你运行看看 , 把行数调成一样的运行出来的结果有问题啊第一行就没改第二行替换的全是一样的
1234
aaaaasdfadsfdsa123sdafasdfqwe1234qwerrewqrsd1234qwerwqerewq1234as 1234 123 4
1234
B.txt格式:
壹贰叁肆
伍陆柒捌
玖拾零壹
壹贰叁肆
伍陆柒捌
玖拾零壹
你运行看看 , 把行数调成一样的运行出来的结果有问题啊第一行就没改第二行替换的全是一样的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%i in ('type a.txt ^| find "1234"') do (
set /a n+=1
set ".%%i=_!n!"
)
for /f "delims=" %%j in (b.txt) do (
set /a a+=1
set "_!a!=%%j"
)
for /f "delims=" %%k in (a.txt) do (
set "foo=%%k"
if defined .%%k (
set /a b+=1
call,call,set foo=!foo:1234=%%%%_%%b%%%%%%!
echo !foo!
) else (
echo %%k
)
)
pause>nul
for /f "delims=" %%i in ('type a.txt ^| find "1234"') do (
set /a n+=1
set ".%%i=_!n!"
)
for /f "delims=" %%j in (b.txt) do (
set /a a+=1
set "_!a!=%%j"
)
for /f "delims=" %%k in (a.txt) do (
set "foo=%%k"
if defined .%%k (
set /a b+=1
call,call,set foo=!foo:1234=%%%%_%%b%%%%%%!
echo !foo!
) else (
echo %%k
)
)
pause>nul
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询