Ошибка пакетного файла Windows: ошибка «неожиданно в это время» - PullRequest
0 голосов
/ 21 марта 2012

Я получаю ошибку для моего кода партии

was unexpected at this time

Я удалил все комментарии и сопоставил все открывающие скобки с закрывающими счетчики, но все еще получаю ту же ошибку.

Что означает ошибка?

1 Ответ

3 голосов
/ 09 мая 2012

Наиболее вероятная причина этой ошибки - раскрытие% переменной%, используемое в скобках, потому что в этом случае расширенное значение - это значение, которое переменная имела до входа в (блок). Простой пример:

@echo off
for /L %%i in (1,1,10) do (
   set /P input=Enter input value: 
   if %input% == One (
      echo Option "one" selected
   )
   if %input% == Two (
      echo Option "two" selected
   )
   . . .
)

В предыдущем примере значение% input% всегда расширяется до нуля, поскольку эта переменная не существует до выполнения цикла FOR, поэтому значения if расширяются до if == One ( и вызывают вышеупомянутую ошибку. Помните, что расширение% var% достигается только один раз , когда команда для выполнения анализируется перед выполнением. В этом случае команда для выполнения является внешним FOR, поэтому все расширения% var%, включенные в нее на любом уровне , имеют такой эффект.

Способ решения этой проблемы - через Отложенное расширение , то есть сначала включите команду setlocal EnableDelayedExpansion и замените все расширения% var% на! Var! из них. Таким образом, значение! Var! переменная будет расширяться каждый раз, когда будет выполняться команда, в которой она появляется. Введите set /? и cmd /? для получения дополнительной информации по этой теме.

...