Edite linhas abaixo de certas

0

Eu preciso editar a linha abaixo de uma determinada linha com um determinado texto Estou editando um arquivo .txt usando .bat ou .vbs no windows 8.

Exemplo

Account 1
ABC  -         Debit    900
     -         Credit   900
DEF  -         Debit    800
     -         Credit   100

Eu quero que a saída seja assim

Account 1
ABC  -         Debit    900
ABC  -         Credit   900
DEF  -         Debit    800
DEF  -         Credit   100
    
por Aj Santos 16.04.2018 / 04:14

1 resposta

0

Editar em lote significa reescrever o arquivo, então isso pode funcionar:

:: Q:\Test18\SU_1314377.cmd
@Echo off
SetLocal EnableExtensions EnableDelayedExpansion
Set "File=Accounts.txt"
Set "NewFile=Accounts2.txt"

(For /f "delims=" %%A in (%File%) do (
    Set "Line=%%A"
    Set "Debit=!Line:*Debit=!"
    Set "Credit=!Line:*Credit=!"
    If "!Line!" Neq "!Debit!"  Call Set "Account=%%Line:Debit!Debit!=%%"
    If "!Line!" Neq "!Credit!" Call Set "Line=!Account!Credit!Credit!"
    Echo:!Line!
) )> "%NewFile%" 
  • O lote extrai valores de Débito / Crédito (com espaços à esquerda), substituindo tudo na linha atual até as palavras Débito / Crédito.
  • Se a linha atual contiver Débito, o nome na frente será armazenado em var Account
  • Se a linha atual contiver crédito, a linha será reconstruída com o valor armazenado na frente
por 17.04.2018 / 12:29