2016-05-12 3 views
1

Ich habe ein Skript, das Assembler verwendet und soll Programm für einige asm TestsUnerwartete Klammer ')' in Batch

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 
    ... 
) 

Und wenn cmd läuft, sagt Unexpected appearance ')' nur nach der Verarbeitung exit /b 1) (vor for Anweisung)

laufen

ich nicht sehen, wo ich jede Klammer verpasst haben, aber ich weiß, es ist ein Fehler mit ihnen ist, weil, wenn ich %assembler% %arch_flags% %TEST_DIR%\caller.asm -o caller.elf laufen es gibt

Assembler for NM6403-05 v1.75. (c) 1996-2008, RC Module. All rights reserved. 

Konnte es von dieser (c) ausgegeben werden oder ich vermisse etwas einfacher?

+4

Ihre variablen Tests wie 'if% REPO_PATH% equ" "' sind gebrochen, wie Sie ein Verzeichnis mit der Zeichenkette '" "' vergleichen, das kann nicht nie wahr sein. Ändere es in 'if"% REPO_PATH% "equ" "'. Und zeigen Sie uns alle Ihre Verzeichnisse, ich nehme an, dass eine enthält ')' wie in 'C: \ Programme (x86)' – jeb

+0

Also Sie sagen, die 'exit/b 1' läuft und dann erhalten Sie den Fehler? Wenn dem so ist, kommt es nicht einmal zur Aussage "für". Rufen Sie diese Batchdatei aus einer anderen Batchdatei auf? – aphoria

+0

@jeb danke, ich sollte dies auch beheben – mechanic

Antwort

0

ich den Platz mit dem Thema gefunden habe, und ich habe zu entschuldigen, waren meine Gedanken nicht korrekt und daher war meine Frage

Diese Saite im for

if exist %test_path% (goto continue) 

gerade nach der letzten Zeile nicht korrekt war Ich schrieb in for und continue Label war in der für sicher Aber können Sie erklären, warum kann ich diese Linie nicht verwenden? Gleiches mit nein () um zu gehen