В чем заключается синтаксическая ошибка в этом пакетном скрипте? - PullRequest
0 голосов
/ 17 сентября 2011

Я пытаюсь получить подстроку из строки и проверить, равна ли она "Системе".Я получаю строку от %% a.Когда я запускаю скрипт, я получаю сообщение об ошибке «неожиданно (». Если я удаляю строки внутри цикла for («set _varsub ...»), ошибка исчезает. Поэтому я думаю, что в моей команде подстроки есть какая-то синтаксическая ошибка.кто-нибудь скажет мне?

  for /f "tokens=1,3,4,* delims=: " %%a in ('e:\DeployTools\handle.exe %deploymentdir%\%%i ^| findstr /i pid: ')  do @(


        set _varsub=%%a
        set _varsub=%_varsub:~0,6%
        if not %_varsubstring%==System (

        // do something
      )

Ответы [ 2 ]

1 голос
/ 17 сентября 2011

Как писал thescottknight, ваш код потерпит неудачу, так как переменная не определена,
, но даже тогда он потерпит неудачу, так как расширение внутри скобок не будет работать с процентом.
В вашем случае вам следует использоватьзадержка расширения с восклицательными знаками.

set _varsub=%%a
set _varsub=!_varsub:~0,6!
1 голос
/ 17 сентября 2011

Попробуйте поместить кавычки вокруг переменных в операторе if,

если не '% _varsubstring%' == 'Система' (...

неожиданная ошибка в том, что _varsubstring не определен в этой точке, поэтому строка оценивается как:

если нет == Система (

...