
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에 저장됩니다.
- 현재 줄에 Credit이 포함되어 있는 경우 해당 줄은 앞에 저장된 값으로 다시 작성됩니다.