Batch file 使用批处理编程在第2行后插入特定文本

Batch file 使用批处理编程在第2行后插入特定文本,batch-file,Batch File,我有一个像这样的文件 018183020770901400015576526S0000140000140000140001242017 0052500056661095000015576527S000009000095000001242017 015702029410030000015576528S0000300000003000001242017 239787006994031500015576529S00000315000150003150000140001242017 2466260219

我有一个像这样的文件

018183020770901400015576526S0000140000140000140001242017
0052500056661095000015576527S000009000095000001242017
015702029410030000015576528S0000300000003000001242017
239787006994031500015576529S00000315000150003150000140001242017
2466260219154015000015576530S00000015000001242017


我需要在第2行之后插入一个名为“插入新行”的特定文本,并将输出重定向到具有不同文件名的新文件。如何使用批处理编程解决此问题。

使用
Findstr/N
对文件行进行编号

> findstr /N ".*" test.txt
1:0181830207709014000015576526S00000140000014000001242017
2:0052500056661095000015576527S00000950000095000001242017
3:0157020294103030000015576528S00000300000030000001242017
4:2397870060994031500015576529S00000315000031500001242017
5:2466260219154015000015576530S00000150000015000001242017
和一个
For/f
循环来解析输出,在冒号处将数字拆分为变量
%%a
,行内容拆分为变量
%%B
。如果数字为
2
则插入额外的一行

@Echo off
Set "File=Test.txt"
Set "NewFile=TestNew.txt"
(
  For /f "Tokens=1*Delims=:" %%A in (
    'Findstr /N ".*" "%File%"'
  ) Do If %%A Equ 2 (
    Echo:insert me a new line before
    Echo:%%B
    Echo:insert me a new line below
  ) Else (
    Echo:%%B
  )
) >"%NewFile%"
编辑更改了后续读者的逻辑。样本输出:

> type TestNew.txt
0181830207709014000015576526S00000140000014000001242017
insert me a new line before
0052500056661095000015576527S00000950000095000001242017
insert me a new line below
0157020294103030000015576528S00000300000030000001242017
2397870060994031500015576529S00000315000031500001242017
2466260219154015000015576530S00000150000015000001242017

您可以从搜索类似的问答对或提供现有代码开始。解释您是如何运行该代码的,它做了什么,您预期会发生什么,以及您特别需要哪些帮助。(请理解这不是免费的代码编写服务)好的。成功了。我甚至不知道findstr/N表达式。感谢you@neewbee你可以考虑