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可能重复的