Zeilen unterhalb bestimmter

Zeilen unterhalb bestimmter

Ich muss die Zeile unter einer bestimmten Zeile mit einem bestimmten Text bearbeiten. Ich bearbeite eine TXT-Datei mit .bat oder .vbs in Windows 8.

Beispiel

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

Ich möchte, dass die Ausgabe so aussieht

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

Antwort1

Beim Bearbeiten im Stapel wird die Datei neu geschrieben. Dies könnte also funktionieren:

:: 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%" 
  • Der Stapel extrahiert Soll-/Habenwerte (mit führenden Leerzeichen), indem er alles in der aktuellen Zeile bis zu den Wörtern „Soll“/„Haben“ ersetzt.
  • Wenn die aktuelle Zeile Debit enthält, wird der Name davor in der Variable Konto gespeichert.
  • Wenn die aktuelle Zeile „Guthaben“ enthält, wird die Zeile mit dem gespeicherten Wert davor neu aufgebaut.

verwandte Informationen