Пакетный файл Windows, если еще используется

10

Извините, я новичок в этом деле. Я бы хотел запустить в определенной последовательности один и тот же bat-файл с разными параметрами. Я написал очень простой командный файл:

@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

Это не работает, потому что elseне признается.

Большое спасибо за любую помощь!

Paola
источник
Очевидно, что если проблема не в том, о чем вы спрашиваете, но разве ECHOв середине вашего командного файла не должно быть ECHO.или что-то еще?
Скотт
Я ответил на ваш вопрос?
BDM

Ответы:

19

Из ifдокументации по командной строке (через help ifили доступную в TechNet тоже).

Предложение ELSE должно находиться в той же строке, что и команда после IF. Например:

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

Следующее НЕ будет работать, потому что команда del должна быть завершена символом новой строки:

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

Также не сработает следующее, поскольку команда ELSE должна находиться в той же строке, что и конец команды IF:

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


Итак, ваш скрипт будет работать, если вы замените

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

С

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

ИЛИ

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

Надеюсь, это поможет.

БДМ
источник
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
источник
1
Что со всеми @с?
BDM
@ProfPickle Скрывает команды карты. Образец @ECHO OFFи ECHO OFF.
STTR
1
Я знаю, но вам не нужно использовать его, как только вы положите echo off.
БДМ
1
@ProfPickle Да, это так, но были времена, и программы игнорировали, ECHO OFFно воспринимали @. Думайте об этом как дань моей паранойе или историческим случаям).
STTR
1
Справедливо, я понимаю паранойю.
BDM