意外的括号')'在批处理

时间:2016-05-12 12:40:40

标签: windows batch-file scripting

我有一个使用汇编程序的脚本,应该为某些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)发布还是我遗漏了更简单的东西?

1 个答案:

答案 0 :(得分:0)

我找到了问题的地方,我不得不道歉,我的想法不正确,因此我的问题是

for中的此字符串不正确

if exist %test_path% (goto continue)

for张贴的最后一行之后,continue标签就在for中 但你能解释一下为什么我不能用这条线? 与goto

周围没有()相同