Board logo

标题: [文本处理] [已解决]求批处理在B文本中每行第一个内容替换掉与A文本一样的内容 [打印本页]

作者: jrx401    时间: 2019-10-9 14:50     标题: [已解决]求批处理在B文本中每行第一个内容替换掉与A文本一样的内容

详细如下;
B文本内容;
AAAAA
BBBBB
GGGG

A文本内容(空格间隔);
AAAAA 1
BBBBB 2
FFFFFF 3

执行后;
B文本内容;
AAAAA 1
BBBBB 2
GGGG

盼望高手帮忙解决,衷心感谢!!
作者: terse    时间: 2019-10-9 15:35

本帖最后由 terse 于 2019-10-9 18:03 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "tokens=1*" %%i in ('findstr /ig:b.txt a.txt') do set #%%i=%%j
  3. >new.txt(for /f %%i in ('type b.txt') do for /f "tokens=*" %%i in ("%%i !#%%i!") do echo;%%~nxi)
  4. pause
复制代码

作者: jrx401    时间: 2019-10-9 17:26

感谢大虾

执行后
B问本为
aaaa
bbbb
dddd

如果想要执行结果为
new.txt
AAAAA 1
BBBBB 2
GGGG
可否指教呢?

衷心感谢
作者: jrx401    时间: 2019-10-9 17:29

不好意思,是我弄错了。
感谢
作者: terse    时间: 2019-10-9 18:04

回复 4# jrx401
上面修改后执行结果是什么
作者: jrx401    时间: 2019-10-9 19:12

回复 5# terse

执行结果如下;
AAAAA 1
BBBBB 2
GGGG

另外,如果想要执行结果为如下时,怎样修改比较好呢?
测试几个方法,没有称功。
AAAAA 1
BBBBB 2
GGGG new

衷心感谢
作者: terse    时间: 2019-10-9 19:50

本帖最后由 terse 于 2019-10-10 10:07 编辑

回复 6# jrx401
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "tokens=1*" %%i in ('findstr /ig:b.txt a.txt') do set #%%i=%%j
  3. (for /f %%i in ('type b.txt') do (
  4.         for /f "tokens=1*" %%a in ("%%i !#%%i!") do (
  5.              if #%%b == # (echo;%%a new) else echo;%%a %%b
  6.         )
  7. ))>t.$
  8. move t.$ b.txt >nul
复制代码

作者: jrx401    时间: 2019-10-10 09:03

回复 7# terse


    结果与上一个一样,输出如下;
AAAAA 1
BBBBB 2
GGGG

衷心感谢

使用code;
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1*" %%i in ('findstr /ig:b.txt a.txt') do if "#%%j" == "#" (set #%%i=new) else set #%%i=%%j
>ABresult.txt (for /f %%i in ('type b.txt') do for /f "tokens=*" %%i in ("%%i !#%%i!") do echo;%%~nxi)
pause
作者: terse    时间: 2019-10-10 10:07

回复 8# jrx401
上面的试一下
作者: jrx401    时间: 2019-10-10 12:22

回复 9# terse


感谢大虾,直接过如下;
完全符合。
AAAAA 1
BBBBB 2
GGGG new




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2