Cmd 在txtfile的中间添加多行

Cmd 在txtfile的中间添加多行,cmd,Cmd,嗯 这里有一个文件txt.txt line1 line2 add after this line line4 etc etc 和另一个文件addthis.txt 其中包含多行 我想在addthis中添加所有这些行,在addthis行之后添加 我想知道的是,为了实现这一目标,我必须做出哪些改变 非常感谢您的帮助 @ECHO OFF SETLOCAL SET /p info="enter info : " :: read addafter line ( FOR /f "delims=" %%i I

嗯 这里有一个文件
txt.txt

line1
line2
add after this line
line4
etc
etc
和另一个文件
addthis.txt
其中包含多行

我想在addthis中添加所有这些行,在
addthis行之后添加

我想知道的是,为了实现这一目标,我必须做出哪些改变

非常感谢您的帮助

@ECHO OFF
SETLOCAL
SET /p info="enter info : "
:: read addafter line
(
FOR /f "delims=" %%i IN (poison1.txt) DO (
SET addafter=%%i
FOR /f "delims=" %%n IN (' findstr /n "^" txtfile.txt') DO (
SET line=%%n
SETLOCAL ENABLEDELAYEDEXPANSION
SET line=!line:*:=!
ECHO(!line!
IF "!line!"=="!addafter!" TYPE your_multiline_addition.txt
ENDLOCAL
)
)
)>newfile.txt

FC newfile.txt txtfile.txt

GOTO :eof
只需
键入您的\u multiline\u addition.txt,而不是
ECHO(%input%

(你也可以扔掉你的输入)

你可以

TYPE "%info%"
如果要输入包含附加项的文件的名称


测试数据和结果:

======== poison1.txt ===========
"A line !of! ] many < & >var*ied %poison ^ char;ac(ters) | like "," a\nd+so=on"
======== extra_lines.txt ===========
extra line one
extra line two
extra line three
======== txtfile.txt ===========
line one 
line two 
line three
A line !of! ] many < & >var*ied %poison ^ char;ac(ters) | like "," a\nd+so=on

line 5 was blank - this is line FIVE
"A line !of! ] many < & >var*ied %poison ^ char;ac(ters) | like "," a\nd+so=on"

line 8 was blank - this is line NINE
======== newfile.txt ===========
line one 
line two 
line three
A line !of! ] many < & >var*ied %poison ^ char;ac(ters) | like "," a\nd+so=on

line 5 was blank - this is line FIVE
"A line !of! ] many < & >var*ied %poison ^ char;ac(ters) | like "," a\nd+so=on"
extra line one
extra line two
extra line three

line 8 was blank - this is line NINE
==========毒物1.txt===========
“一行!]许多<&>var*ied%poison^char;ac(ters)| like”,“A\nd+so=on”
==========额外的_lines.txt===========
额外一行
额外的第二行
额外第三行
==========txtfile.txt===========
第一行
第二行
第三行
一行!共!]许多<&>var*ied%poison^char;ac(ters)| like”,“A\nd+so=on
第5行为空-这是第5行
“一行!]许多<&>var*ied%poison^char;ac(ters)| like”,“A\nd+so=on”
第8行为空-这是第9行
==========newfile.txt===========
第一行
第二行
第三行
一行!共!]许多<&>var*ied%poison^char;ac(ters)| like”,“A\nd+so=on
第5行为空-这是第5行
“一行!]许多<&>var*ied%poison^char;ac(ters)| like”,“A\nd+so=on”
额外一行
额外的第二行
额外第三行
第8行为空-这是第9行

ok,但我在同一批处理文件中有一个
setlocal enabledelayedexpansion
方法,我如何禁用它以使
SET line=%%n
工作?我在
SET line=%%n
之前尝试了
setlocal disabledelayedexpansion
,但它说setlocal递归级别达到了最大值。我不知道你的意思。
设置了吗本地启用延迟扩展
设置
不起作用)早于此整个例程?在任何情况下,
SET line=%%n
都应该不受影响-您的问题是如何插入多行而不是您最初指定的一行。对于每个
SETLOCAL
您需要匹配的
ENDLOCAL
,如上面的例程所示,
SETLOCAL ENABLEDELAYEDEXPANSION
在4行之后与
ENDLOCAL
匹配。当到达ENDLOCAL时,环境将恢复到执行
SETLOCAL
时的状态。可以通过执行
ENDLOCAL&set var=%var%
var
设置为
var
的最终值来更改原始环境在
SETLOCAL..ENDLOCAL
括号中。但是-到达文件末尾与到达ENDLOCAL相同,并终止当前最里面的SETLOCAL。cmd类型不按预期工作。它只将一个空行复制到文件,对我来说不适用。复制文件的整个内容
type
dp可能重复的