Batch file 使用批处理文件在文件中段落的最后一行之后插入新行

Batch file 使用批处理文件在文件中段落的最后一行之后插入新行,batch-file,Batch File,我想使用批处理在文件的段落末尾插入一行 剧本在我的档案中,段落的最后一行不清楚。它是 形式为“LoadModule name moduleName”的变量 新行:“LoadModule new\u module/mod\u newmod.so” 我的文件input.conf abc def xyz LoadModule foo_module libexec/mod_fooa.so LoadModule proxy_module libexec/mod_proxy.so LoadModule

我想使用批处理在文件的段落末尾插入一行 剧本在我的档案中,段落的最后一行不清楚。它是 形式为“LoadModule name moduleName”的变量

新行:“LoadModule new\u module/mod\u newmod.so”

我的文件input.conf

abc def xyz 

LoadModule foo_module libexec/mod_fooa.so
LoadModule proxy_module libexec/mod_proxy.so
LoadModule lmn_module libexec/mod_abc.so
LoadModule xyz_module libexec/mod_def.so

ExtendedStatus controls whether Apache will generate "full" status
结果:

abc def xyz 

LoadModule foo_module libexec/mod_fooa.so
LoadModule proxy_module libexec/mod_proxy.so
LoadModule lmn_module libexec/mod_abc.so
LoadModule xyz_module libexec/mod_def.so
LoadModule new_module module/mod_newmod.so

ExtendedStatus controls whether Apache will generate "full" status
在LoadModule段落的最后插入一行“LoadModule new\u module module/mod\u newmod.so”。 请对此提出解决方案。非常感谢

@echo off
setlocal
set "file=test.txt"
set "here="
for /f "delims=:" %%A in ('findstr /lnbc:"LoadModule" "%file%" 2^>nul') do set here=%%A
if defined here (
  >"%file%.new" (
    for /f "tokens=1* delims=:" %%A in ('findstr /n "^" "%file%"') do (
      echo(%%B
      if %%A==%here% echo(LoadModule new_module module/mod_newmod.so
    )
  )
  move /y "%file%.new" "%file%"
)
type "%file%"
此解决方案假定现有行中没有以
开头。如果任何行以
开头,则需要不同的解决方案


编辑-如果test.txt不存在或test.txt不包含任何以“LoadModule”开头的现有行,则更新答案为“不做任何事情”。

您能为我推荐有关学习编写批处理文件的链接吗?@romeo8812-如果您得到满足您所有需求的答案,您应该通过单击复选标记来接受答案。接受答案会让其他人知道问题已被回答,它会给你2分,给发布已接受答案的人15分。@romeo8812-它应该在答案的左上角附近。。。我最喜欢的链接是。其他好的链接是,是的。如果我想签入我的文件exist“LoadModule new\u module/mod\u newmod.so”->将不会在test.txt中插入新行。我该怎么办?@romeo8812-我更新了我的答案。