2

バッチスクリプトを使用して、ファイルの段落の最後に行を挿入したいと思います。私のファイルでは、段落の最後の行が明確ではありません。「LoadModulenamemoduleName」という形式の変数です。

新しい行: "LoadModule new_module 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段落の最後に新しい行「LoadModulenew_modulemodule/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 に答える