Arquivo em lote do Windows se outro uso

10

Desculpe, eu sou novo nessas coisas. Eu gostaria de executar em uma determinada sequência o mesmo arquivo bat com parâmetros diferentes. Eu escrevi um arquivo em lotes 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 elsenão é reconhecido.

Muito obrigado por qualquer ajuda!

Paola
fonte
Obviamente, se esse não é o problema que você está perguntando, mas ECHOo meio do arquivo em lotes não precisa ser ECHO.ou algo assim?
Scott
Eu respondi sua pergunta?
BDM 17/03/2013

Respostas:

19

A partir da ifdocumentação na linha de comando (via help ifou disponível também no TechNet ).

A cláusula ELSE deve ocorrer na mesma linha que o comando após o IF. Por exemplo:

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

O seguinte NÃO funcionaria porque o comando del precisa ser finalizado por uma nova linha:

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

O trabalho a seguir também não funcionaria, pois o comando ELSE deve estar na mesma linha que o final do comando IF:

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


Portanto, 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

OU

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

Espero que ajude.

BDM
fonte
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
STTR
fonte
11
O que há com todos os @s?
BDM 15/03
@ProfPickle Oculta comandos de mapa. Amostra @ECHO OFFe ECHO OFF.
STTR 15/03/13
11
Eu sei, mas você não precisa usá-lo depois de colocar echo off.
BDM 15/03
11
@ProfPickle Sim, é verdade, mas houve momentos e programas que ignoram, ECHO OFFmas percebem @. Pense nisso como uma homenagem à minha paranóia ou casos históricos).
STTR 16/03/13
11
Justo, eu entendo paranóia.
BDM