1

我之前的问题有答案,但现在我意识到我需要更多帮助。我的代码几乎可以完成我想要的所有操作:

@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 作为名称中包含变量的文件名,一系列文件,没有确切的限制,例如:

日志_0.txt

日志_1.txt

日志_2.txt

日志_3.txt

等等....

可能只有Log_0.txt,也可能有Log_0.txt到Log_23.txt,甚至更多……

另外,我想在 Class=ShipDummy 的替换文本中添加另一行:Class-ShipDummy Type=206

这将用 Type=206 替换 Class=ShipDummy 替换文本下方的一行文本。\

4

1 回答 1

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!
        )
    )
)
于 2013-02-21T14:05:52.850 回答