Пакетний файл 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не визнається.

Дякую за будь-яку допомогу!


Очевидно, якщо це не проблема, про яку ви ставите, але чи не 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

1
Що з усіма @s?
BDM

@ProfPickle Приховує команди карт. Зразок @ECHO OFFі ECHO OFF.
STTR

1
Я знаю, але вам не потрібно використовувати його, коли ви кладете echo off.
BDM

1
@ProfPickle Так, так, але були часи, і програми ігнорували, ECHO OFFале сприймали @. Подумайте про це як данину моїй параної чи історичним випадкам).
STTR

1
Досить справедливо, я розумію параної.
BDM
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.