2017-01-10 5 views
-2

У меня есть сценарий с:странный вопрос с этикетками

IF "%USER_COUNTRY%"=="ie" IF NOT "%POS_TYPE%" == "ipos" (GOTO IE_Start) 

и ниже У меня есть несколько меток:

:PT_Start 
ECHO Start PT 
    rem for PT Num Lock must be activated before POS start 
    .\native\klocks.exe +n 

    IF NOT EXIST c:\C3 GOTO NO_C3 
    pushd c:\C3\ 
    tskill /V /A c3_net 
    cmd /c START /min c3_net.exe 
    GOTO C3_DONE 
    :NO_C3 
    ECHO C3 not present in C:\C3\ 
    ECHO start without C3 
    :C3_DONE 
    popd 

GOTO Start_Now 

:IE_Start 
ECHO Start IE 

    IF NOT EXIST c:\C3 GOTO NO_C3_RPM 
    pushd c:\C3\ 
    tskill /V /A c3_rpm_net 
    cmd /c START c3_rpm_net.exe 
    GOTO RPM_C3_DONE 
    :NO_C3_RPM 
    ECHO C3 not present in C:\C3\ 
    ECHO start without C3 
    :RPM_C3_DONE 
    popd 

GOTO Start_Now 

:PL_Start 
ECHO Start PL 
    pushd c:\AModule\ 
    cmd /c START Forcom.AModule.exe 
    echo "AModule ist gestartet" 
    popd 

GOTO Start_Now 

Я получаю:

The system cannot find the batch label specified - IE_Start 

Script запускается под Windows, но он был сохранен в Unix, поэтому он имеет L F-концевые знаки. Я говорю это, потому что есть несколько способов исправить эту проблему, но я не понимаю, почему. Я заметил, что после исправления возникла проблема:

  1. Изменение линейных знаков на CR + LF (для Windows);
  2. Перемещение IE_Start ярлык и его часть кода до PT_Start;
  3. Удаление /min от cmd /c START /min c3_net.exe;
  4. Изменение строки из пункта 3) до cmd /c START /min C:\C3\c3_net.exe (этот файл не существует);

Что происходит?

+0

это ** не ** Баш –

+2

Независимо от других вопросов, ': IE_Start' в коде никогда не запускать из блока кода вы в курсе, мы знаем, что это может быть запущена с' GOTO' в другом месте в вашем скрипте. 'IF/I"% USER_COUNTRY% "==" ie "(IF/I NOT"% POS_TYPE% "==" ipos "GOTO IE_Start)'. Но вам действительно нужно включить весь код. – Compo

ответ

0
IF "%USER_COUNTRY%"=="ie" IF NOT "%POS_TYPE%" == "ipos" (GOTO IE_Start) 

Ваш код выше не является правильным:

1) Вы используете две разные, если заявления в качестве одного лайнера.

2) первый, если содержит условие, но отсутствует командный блок.

Ниже приведен правильный путь к достижению того, чего вы хотите.

IF "%USER_COUNTRY%"=="ie" (do something) 

IF NOT "%POS_TYPE%"=="ipos" (GOTO IE_Start) 
Смежные вопросы