我有一个包含超过32,000行评论机器代码的.txt文档。它看起来像这样:
Display menu window
C0/000E: E220 SEP #$20 (Set 8-bit accumulator)
C0/0010: C210 REP #$10 (Set 16-bit X and Y)
我有一个脚本,可以按如下方式将其转换为编译目的:
; Display menu window
SEP #$20 (Set 8-bit accumulator)
REP #$10 (Set 16-bit X and Y)
问题是,我希望将每个功能的第一个地址保留为标签。所以它应该是这样的:
; Display menu window
C0000E: SEP #$20 (Set 8-bit accumulator)
REP #$10 (Set 16-bit X and Y)
具体来说,这意味着我需要一个脚本:
我的其他脚本将负责其余部分。我需要脚本添加一个分号,因为我的实际脚本会在前面添加另一个分号,所以我可以使用find-and-replace来安全删除它们。
请注意,此主板会自动将标签转换为多个空格,因此我提供的代码中的每一行与本地文件中的行长度不同。
答案 0 :(得分:1)
不确定为什么使用批处理文件进行文本处理,但这里有一个脚本可以将问题中的第一个文本块转换为第三个文本块:
@echo off
setlocal enableDelayedExpansion
>output.txt (for /f "skip=2 delims=" %%a in ('find /n /v "" input.txt') do (
for /f "delims=] tokens=1*" %%b in ("%%a") do (
set line=%%c
if "!line!"=="" (
echo:
) else if not "!line:~0,3!"=="C0/" (
echo ; !line!
set inblock=
) else (
for /f "tokens=1,2*" %%b in ("!line!") do (
if "!inblock!"=="" (
set inblock=1
set label=%%b&set label=!label:/=!
) else (
set label=
)
echo !label! %%d
)
)
)
))
pause
NB。用!label之间的文字制表符替换空格!和{%{1}}中的%% d。