Editar líneas debajo de ciertas

Editar líneas debajo de ciertas

Necesito editar la línea debajo de cierta línea con un texto determinado. Estoy editando un archivo .txt usando .bat o .vbs en Windows 8.

Ejemplo

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

quiero que la salida sea asi

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

Respuesta1

Editar por lotes significa reescribir el archivo, por lo que esto podría funcionar:

:: Q:\Test\2018\04\17\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%" 
  • El lote extrae valores de Débito/Crédito (con espacios iniciales) reemplazando todo en la línea actual hasta las palabras Débito/Crédito.
  • Si la línea actual contiene Débito, el nombre delante se almacena en var Cuenta
  • Si la línea actual contiene Crédito, la línea se reconstruye con el valor almacenado al frente.

información relacionada