我有一个使用汇编程序的脚本,应该为某些asm测试运行程序
rem @echo off
setlocal enabledelayedexpansion
set REPO_PATH=%~dp0..
set INSTALL_PATH=%REPO_PATH%\bin
set TEST_DIR=%REPO_PATH%\testing_system
set TEST_LIST=%TEST_DIR%\file_list_linux.lst
set WS=%TEST_DIR%\WS
set QEMU=%REPO_PATH%\qemu\ppdl-linux-user\qemu-ppdl.exe
if not exist %QEMU% (
echo Warning: %QEMU% not found, use %INSTALL_PATH%\qemu\qemu-ppdl
set QEMU=%INSTALL_PATH%\qemu\qemu-ppdl
)
set assembler=%TEST_DIR%\toolset\asm.exe
set linker=%TEST_DIR%\toolset\nmc-ld.exe
set arch_flags=-nmc4
if %REPO_PATH% equ "" (set cond=1)
if %INSTALL_PATH% equ "" (set cond=1)
if cond equ 1 (
::echo "Usage: ./run_tests.sh path-to-repo path-to-install-dir"
echo Usage: run run_tests.bat only from 'testing_system' dir
exit /b 1
)
if not exist %QEMU% (
echo Error: %QEMU% not found
exit /b 1
)
%assembler% %arch_flags% %TEST_DIR%\caller.asm -o caller.elf
if errorlevel 1 (
set res=1
echo Error: caller.asm assembler error
exit /b 1
)
for /f "tokens=*" %%t in (%TEST_LIST%) do (
set test_path=%TEST_DIR%\emutest\%%t
...
)
在处理Unexpected appearance ')'
之后(在exit /b 1 )
声明之前)运行cmd时显示for
我没看到错过任何括号的地方,但我知道它们有错误,因为当我运行%assembler% %arch_flags% %TEST_DIR%\caller.asm -o caller.elf
时它会输出
Assembler for NM6403-05 v1.75. (c) 1996-2008, RC Module. All rights reserved.
这可能是由(c)
发布还是我遗漏了更简单的东西?
答案 0 :(得分:0)
我找到了问题的地方,我不得不道歉,我的想法不正确,因此我的问题是
for
中的此字符串不正确
if exist %test_path% (goto continue)
在for
张贴的最后一行之后,continue
标签就在for中
但你能解释一下为什么我不能用这条线?
与goto
()
相同