标签的奇怪问题

时间:2017-01-10 13:03:20

标签: windows batch-file label line-endings

我有一个脚本:

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

脚本在Windows下运行,但它保存在Unix上,因此它有LF行尾符号。我告诉这个,因为解决这个问题的方法很少,但我不明白为什么。我注意到以下问题解决了这个问题:

  1. 将行尾符号更改为CR + LF(特定于Windows);
  2. IE_Start;
  3. 之前移动PT_Start标签及其部分代码
  4. /min;
  5. 中移除cmd /c START /min c3_net.exe
  6. 从第3点更改行到cmd /c START /min C:\C3\c3_net.exe(此文件无论如何都不存在);
  7. 发生了什么事?

1 个答案:

答案 0 :(得分:0)

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

上面的代码不正确:

1)您使用两个不同的if语句作为一个班轮。

2)第一个if包含一个条件但缺少命令块。

以下是实现目标的正确方法。

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

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