Extract and Use System Output (Batch) -
i write batch file allows quicker assembling of multiple assembly files using a86 assembler , view result. there 2 cases, when there assembly error , when there no error.
sample assembler input:
a86 file1.asm file2.asm file3.asm file4.asm
case 1: error. supposing there error in file3.asm, system output on line 4:
error messages inserted file3.asm
case 2: no error. system output on line 4:
object: file1.bin
in case 1, open file generated error using notepad++, using command notepad++ filename.asm
.
in case 2, open generated object in hex editor using command hxd filename.bin
.
what can done extract error/success file name system output?
sorry, i'm not familiar a86
, have idea or two. if a86
returns 0 on success, non-zero on fail, way:
@echo off setlocal enabledelayedexpansion if defined programfiles(x86) (set "pf=%programfiles(x86)%") else set "pf=%programfiles%" :: path notepad++ set "npp=%pf%\notepad++\notepad++.exe" :: path hxd (fix this, please) set "hxd=%pf%\hxd\hxd.exe" set idx=1 /f "tokens=1-5*" %%a in ( 'a86 file1.asm file2.asm file3.asm file4.asm 2^>^&1' ) ( if !idx! equ 4 ( rem if %errorlevel% non-zero (is 1 or higher) if errrorlevel 1 ( start "" "%npp%" %%e ) else ( start "" "%hxd%" %%b ) ) echo(%%a %%b %%c %%d %%e %%f set /a "idx+=1" )
if errorlevel returned a86
not reliable indicator, change if errorlevel 1
if "%%j"==""
you didn't mention whether error output of a86
sent via stderr or stdout, redirected stderr stdout in for
loop 2^>^&1
. have no clue whether it's needed or not, shouldn't hurt if not.
Comments
Post a Comment