arquivo em lote do Windows se outro uso

8

Desculpe, eu sou novo nessas coisas. Eu gostaria de executar em uma determinada seqüência o mesmo arquivo bat com parâmetros diferentes. Eu escrevi um arquivo em lote muito simples:

@echo off

REM Note: to see all command line usage options, run bsearch_headless.bat without any arguments.

call behaviorsearch_headless.bat -p test_behaviorsearch.bsearch -o pippo

ECHO
IF EXIST pippo.finalBests.csv (call behaviorsearch_headless.bat -p test_behaviorsearch.bsearch -o topolino)
else goto :eof  

:eof
ECHO Simulatione End!
PAUSE

Não funciona porque else não é reconhecido.

Muito obrigado por qualquer ajuda!

    
por Paola 16.03.2013 / 00:12

2 respostas

17

Da documentação de if na linha de comando (via help if ou disponível no TechNet também).

The ELSE clause must occur on the same line as the command after the IF. For example:

IF EXIST filename. (
    del filename.
) ELSE (
    echo filename. missing.
)

The following would NOT work because the del command needs to be terminated by a newline:

IF EXIST filename. del filename. ELSE echo filename. missing

Nor would the following work, since the ELSE command must be on the same line as the end of the IF command:

IF EXIST filename. del filename.
ELSE echo filename. missing


Então, seu script funcionaria se você substituísse

IF EXIST pippo.finalBests.csv (call behaviorsearch_headless.bat -p test_behaviorsearch.bsearch -o topolino)
else goto :eof 

com

IF EXIST pippo.finalBests.csv (call behaviorsearch_headless.bat -p test_behaviorsearch.bsearch -o topolino) else goto :eof

OR

IF EXIST pippo.finalBests.csv (
    call behaviorsearch_headless.bat -p test_behaviorsearch.bsearch -o topolino
) else (
    goto :eof
)

Espero que ajude.

    
por 16.03.2013 / 00:25
0

ifelf.cmd:

@ECHO OFF
@IF EXIST "C:\boot.ini" (
@ECHO WoW! It may be M$Windows! 
) ELSE (
@ECHO Boot.ini Lost! My precious! Stolen! 
)
@ECHO .
@ECHO Wait 10 sec ...
@ping 127.0.0.1 -n 10 > NUL
    
por 16.03.2013 / 00:34