Remover linhas do arquivo txt se uma string específica for encontrada

2

Eu não consigo descobrir como remover uma linha específica com meu script em lote para a saída:

type: MD2
status: granted
date: 2016/03/11

type: MD2
status: detached
date: 2016/03/11

se o status for desanexado, o bloco do furo "tipo, data e status" não deve ser gravado / ignorado no arquivo de saída

então o que estou fazendo até agora:

@echo off
setlocal EnableDelayedExpansion
for /f "usebackq skip=10 tokens=1,5,9 delims= " %%a in ("Log.txt") do (
    set "date=%%a"
    set "type=%%b"
    set "status=%%c"
    echo %%c|find "more">nul && set "status=not granted"
    echo %%c|find "detached" >nul && set status=""
    echo type: !type!
    echo status: !status!
    echo date: !date!
    echo.
)>>Test.txt
pause

Exemplo de Log.txt:

2016/03/11 00:00:25:478 I LICENSESERV MD2 (Dassault Systemes V5) granted to client test (42FB1010C6B1ED82-0a292138.1)/172.1.1.1|d|d@EUROPE.S-1-5-21-1832937852-2116575123-337272265-547921.0A292138.1.GGL-42FB1010C6B1ED82|C:\Program Files\ANSYS Inc\v170\AISOL\bin\winx64\ReaderHostU.exe 
2016/03/11 00:01:28:461 I LICENSESERV MD2 (Dassault Systemes V5) detached by timeout from client test (42FB1010C6B1ED82-0a292138.1)/10.41.33.56|d|d@EUROPE.S-1-5-21-1832937852-2116575123-337272265-547921.0A292138.1.GGL-42FB1010C6B1ED82|C:\Program Files\ANSYS Inc\v
    
por user602975 06.06.2016 / 10:42

1 resposta

1

Se o status for detached , não escreva o bloco "tipo, data e status"

Isso é fácil de usar usando o comando if .

Substituir:

echo %%c|find "more">nul && set "status=not granted"
echo %%c|find "detached" >nul && set status=""
echo type: !type!
echo status: !status!
echo date: !date!
echo.

Com:

if "!status!" NEQ "detached"  (
  echo type: !type!
  echo status: !status!
  echo date: !date!
  echo.
  )

Exemplo de entrada:

2016/03/11 00:00:25:478 I LICENSESERV MD2 (Dassault Systemes V5) granted to client test (42FB1010C6B1ED82-0a292138.1)/172.1.1.1|d|d@EUROPE.S-1-5-21-1832937852-2116575123-337272265-547921.0A292138.1.GGL-42FB1010C6B1ED82|C:\Program Files\ANSYS Inc\v170\AISOL\bin\winx64\ReaderHostU.exe 
2016/03/11 00:01:28:461 I LICENSESERV MD2 (Dassault Systemes V5) detached by timeout from client test (42FB1010C6B1ED82-0a292138.1)/10.41.33.56|d|d@EUROPE.S-1-5-21-1832937852-2116575123-337272265-547921.0A292138.1.GGL-42FB1010C6B1ED82|C:\Program Files\ANSYS Inc\v

Exemplo de saída:

type: MD2
status: granted
date: 2016/03/11

O que eu faço se eu também quiser excluir o status também é detached; ?

Você pode remover o ; de !status!

Substituir:

set "status=%%c"

Com:

set status=%%c
set status=!status:;=!

Leitura Adicional

por 06.06.2016 / 11:44