0

特定の行を検索し、その行とそれに続く13行をtxtファイルから削除するためにバッチファイルが必要なtxtファイルがいくつかあります。

txtファイルの例は次のとおりです。

<section1>
line1
line2
line3

<section2>
line1
line2
line3
line4
line5

<section3>
line1
line2
line3
line4
line5
line6
line7
line8

etc.

私が検索する必要がある行<section2>は次のとおりです。次に、以下を削除します。

<section2>
line1
line2
line3
line4
line5

したがって、次のようになります。

<section1>
line1
line2
line3

<section3>
line1
line2
line3
line4
line5
line6
line7
line8

etc.

また、他のセクションの後にいくつかの行を編集する必要があります。たとえば、次のように編集line1<section3>ます。editline1

したがって、<section3>文字列を見つけて、1行目を次のように変更します。

<section3>
editline1
line2
line3
line4
line5
line6
line7
line8

ありがとう

4

1 に答える 1

0
@echo off
  set fnam="%~1"
  set outnam="%~dpn1.out"
  set search4="%~2"
  set section=.
  for /f "tokens=*" %%x in ('type %fnam%') do call :work %fnam% "%%x"
  MOVE /Y %outnam% %fnam%
goto :eof

:work
  set "line=%~2"
  if "%line:~0,1%%line:~-1%"=="<>" (
    if "%section%" neq "." echo.>> %outnam%
    set "section=^%line:~,-1%^>"
    set "line=^%line:~,-1%^>"
  )
  if NOT "%section:~1,-2%>"==%search4% echo %line%>> %outnam%

次のように呼び出します。

section filename.txt "<section2>"
于 2012-08-27T20:43:05.237 に答える