[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

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

盼望高手帮忙解决,衷心感谢!!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 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
复制代码
1

评分人数

TOP

感谢大虾

执行后
B问本为
aaaa
bbbb
dddd

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

衷心感谢

TOP

不好意思,是我弄错了。
感谢

TOP

回复 4# jrx401
上面修改后执行结果是什么

TOP

回复 5# terse

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

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

衷心感谢

TOP

本帖最后由 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
复制代码

TOP

回复 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

TOP

回复 8# jrx401
上面的试一下
1

评分人数

TOP

回复 9# terse


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

TOP

返回列表