标题: [文本处理] [已解决]求批处理在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 编辑
- @echo off & setlocal enabledelayedexpansion
- for /f "tokens=1*" %%i in ('findstr /ig:b.txt a.txt') do set #%%i=%%j
- >new.txt(for /f %%i in ('type b.txt') do for /f "tokens=*" %%i in ("%%i !#%%i!") do echo;%%~nxi)
- 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 - @echo off & setlocal enabledelayedexpansion
- for /f "tokens=1*" %%i in ('findstr /ig:b.txt a.txt') do set #%%i=%%j
- (for /f %%i in ('type b.txt') do (
- for /f "tokens=1*" %%a in ("%%i !#%%i!") do (
- if #%%b == # (echo;%%a new) else echo;%%a %%b
- )
- ))>t.$
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |