我很难为以下任务编写批处理脚本。 说我有以下文本文件。
A.TXT
hello world-0
hi ABC
hello world-1
hi ABC
hello world-2
hi ABC
B.txt
CAT
MAT
RAT
我的 output.txt 文件应包含
hello world-0
hi CAT
hello world-1
hi MAT
hello world-2
hi RAT
如何使用Batch脚本实现此目的? 谢谢!
答案 0 :(得分:0)
尝试使用此
@echo off
setlocal enableextensions enabledelayedexpansion
rem Read a.txt with findstr /n to avoid blank line removal
rem Read b.txt with set /p only when a replacement is needed
< "b.txt" (
for /f "tokens=1,* delims=:" %%f in ('findstr /n "^" ^<"a.txt"') do (
set "line=%%g"
if defined line if not "!line: ABC=!"=="!line!" (
set /p "repl="
for /f %%r in ("!repl!") do set "line=!line: ABC= %%r!"
)
echo(!line!
)
)
endlocal
这应该可以胜任。
答案 1 :(得分:0)
使用好的文件解析工具,例如awk
。你可以下载awk here
C:\>awk "FNR==NR{a[++c]=$1;next}{ for(i=1;i<=NF;i++){ if($i==\"ABC\") { $i=a[++d] } } }1" B.txt A.txt
hello world-0
hi CAT
hello world-1
hi MAT
hello world-2
hi RAT