我以前回答过我的问题,但现在我意识到我需要更多的帮助。我的代码几乎可以完成我想要的所有内容:
@echo off
copy 2.txt 2.txt-backup
setlocal enableDelayedExpansion
>2.txt (
for /f "delims=" %%A in (2.txt-backup) do (
set "ln=%%A"
if "!ln:~0,6!" == "Class=" findstr /c:"ClassName=!ln:~6!" 1.txt >null && set "ln=Class=ShipDummy"
echo !ln!
)
)
但是现在我已经意识到我需要1.txt作为一个文件名,其名称中包含一个变量,一系列文件,没有确切的限制,如:
Log_0.txt
Log_1.txt
Log_2.txt
Log_3.txt
依旧......
可能只有Log_0.txt,或者可能有Log_0.txt通过Log_23.txt,甚至更多......
另外,我想在Class = ShipDummy的替换文本中添加另一行: 类ShipDummy 类型= 206
这将替换Type = 206的Class = ShipDummy替换文本下面的一行文本。\
答案 0 :(得分:1)
这样做你想要的吗?
@echo off
copy 2.txt 2.txt-backup
setlocal enableDelayedExpansion
>2.txt (
for /f "tokens=1* delims=:" %%A in ('findstr /n "^" 2.txt-backup') do (
( echo !ln!| findstr "^Type=206$" >NUL && set ln=ln ) || (
set "ln=%%B"
if "!ln:~0,6!"=="Class=" (
findstr /c:"ClassName=!ln:~6!" Log_*.txt >null && (
echo Class=ShipDummy
set "ln=Type=206"
)
)
if #!ln!==# (echo;) else echo !ln!
)
)
)