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!


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.


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.