2

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

新行:“LoadModule new_module 模块/mod_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_module module/mod_newmod.so”。请为此提出解决方案。非常感谢。

4

1 回答 1

2
@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”开头的现有行,则更新答案以不执行任何操作。

于 2012-06-24T16:50:07.397 回答