批处理如何实现指定文件中字符替换成第二文本文件中的指定字符. 10

如:A.txt中查找第一个字符串1234,发现后用B.txt中的第一行字符串替换。以次类推A.txt查找到第二个字符串1234,B.TXT第二行字符串替换。... 如:A.txt中查找第一个字符串1234,发现后用B.txt中的第一行字符串替换。以次类推A.txt查找到第二个字符串1234,B.TXT第二行字符串替换。 展开
 我来答
奥泼提迷死题客
2009-11-11 · TA获得超过3429个赞
知道大有可为答主
回答量:1627
采纳率:0%
帮助的人:2339万
展开全部
把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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yes___no
2009-11-10 · TA获得超过3153个赞
知道大有可为答主
回答量:1988
采纳率:100%
帮助的人:2024万
展开全部
用软件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存盘。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
biatxue
2009-11-12 · TA获得超过610个赞
知道小有建树答主
回答量:619
采纳率:0%
帮助的人:500万
展开全部
千羽之城的批好像没反应啊,09cdy的批想得不全面啊,同一行中出现几个1234的话替换出来的全是同一列的比如A.txt中格式为:
1234
aaaaasdfadsfdsa123sdafasdfqwe1234qwerrewqrsd1234qwerwqerewq1234as 1234 123 4
1234
B.txt格式:
壹贰叁肆
伍陆柒捌
玖拾零壹
壹贰叁肆
伍陆柒捌
玖拾零壹
你运行看看 , 把行数调成一样的运行出来的结果有问题啊第一行就没改第二行替换的全是一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千羽之城
2009-11-17 · TA获得超过4509个赞
知道大有可为答主
回答量:2132
采纳率:0%
帮助的人:1390万
展开全部
@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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式