特定の行以下の編集

特定の行以下の編集

Windows 8 で .bat または .vbs を使用して .txt ファイルを編集していますが、特定のテキストを含む特定の行の下の行を編集する必要があります。

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

出力は次のようになります

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

答え1

バッチ編集はファイルを書き換えることを意味するので、次のようにするとうまくいくかもしれません:

:: 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%" 
  • バッチは、現在の行の Debit/Credit という単語までのすべてを置き換えて、Debit/Credit の値 (先頭のスペースを含む) を抽出します。
  • 現在の行にDebitが含まれている場合、先頭の名前がvar Accountに格納されます。
  • 現在の行にクレジットが含まれている場合、行は先頭に格納された値で再構築されます。

関連情報