我需要用特定的文本编辑某一行以下的行,我正在 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,则前面的名称将存储到 var Account
- 如果当前行包含信用,则该行将使用前面存储的值重建