File batch di Windows se altro utilizzo


10

Mi dispiace, sono nuovo di queste cose. Vorrei eseguire in una certa sequenza lo stesso file bat con parametri diversi. Ho scritto un file batch molto semplice:

@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

Non funziona perché elsenon è riconosciuto.

Mille grazie per l'aiuto!


Ovviamente, se non è il problema che stai chiedendo, ma non è necessario che sia ECHOnel mezzo del file batch ECHO.o qualcosa del genere?
Scott,

Ho risposto alla tua domanda?
BDM,

Risposte:


19

Dalla ifdocumentazione sulla riga di comando (tramite help ifo disponibile anche in TechNet ).

La clausola ELSE deve essere presente sulla stessa riga del comando dopo IF. Per esempio:

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

Quanto segue NON funzionerebbe perché il comando del deve essere terminato da una nuova riga:

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

Né funzionerebbe il seguente, poiché il comando ELSE deve trovarsi sulla stessa riga della fine del comando IF:

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


Quindi, il tuo script funzionerebbe se lo sostituissi

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

Con

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

O

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

Spero che aiuti.


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

1
Cosa c'è con tutte le @s?
BDM

@ProfPickle Nasconde i comandi della mappa. Campione @ECHO OFFe ECHO OFF.
STTR

1
Lo so, ma non è necessario usarlo una volta messo echo off.
BDM

1
@ProfPickle Sì, lo è, ma ci sono stati momenti e programmi ignorati ECHO OFFma percepenti @. Pensalo come un tributo alla mia paranoia o ai casi storici).
STTR

1
Abbastanza giusto, capisco la paranoia.
BDM
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.