批处理错误级别是在程序运行之前确定的

时间:2019-03-21 15:00:49

标签: batch-file

我目前正在编写一个编译器,并测试各种可能的错误,我正在编写一个批处理脚本,其任务是:

  • 运行前端
  • 运行后端
  • 执行适当的模拟器
  • 回显返回值
  • (尚未实施)将其与正确答案进行比较

我已经有一个可以运行的批处理脚本,它只回显正确的返回值

compiler test.c
pause
MIPS Output.IR
pause
java -jar (path)\Mars4_5.jar Output.asm $v0 $a0
echo Exit Code is %errorlevel%
pause

但是,当我尝试将其扩展为运行整个文件夹时,出现一个奇怪的问题,即在执行任何命令之前已经确定了错误级别

setlocal
set PATH=%PATH%;%~dp0
cd ..\stages\stage_1\valid
for %%c in (*.c) do (
        compiler %%c
        a Output.IR
        java -jar (path)\Mars4_5.jar Output.asm $v0 $a0 
            rem putting pause here doesn't help
        echo Exit Code is %errorlevel%
    )
pause

对于所有测试用例,它都返回0。 0是几种情况的答案,但不是全部。更重要的是,如果您查看已执行的命令,则所有选项的错误级别都是预设的,因此cmd显示:

…
echo Exit Code is 0

我尝试环顾四周,但找不到任何与此问题相关的信息。我真的不知道如何解决这个问题。 该脚本如何进行编辑,以确保退出代码未预先确定?

0 个答案:

没有答案