Эта характеристика указывает на то, что при первом выполнении есть переменная, которая не является set
, но ее значение используется - обычно в операторе if
. Однако выполнение первого раза устанавливает значение для переменной, поэтому при втором запуске синтаксис будет правильным.
Обычно включается команда setlocal
сразу после @echo off
. Это гарантирует, что после завершения кода любые изменения, внесенные в среду, будут отброшены. В этом случае, поскольку у вас нет команды setlocal
, значение переменной будет оставлено для второго запуска.
Проблема с вашим кодом заключается в # 1 FAQ - пожалуйста, найдите delayed expansion
с помощью search
. Переменная folder
не устанавливается при выполнении инструкции if "%YesNo%"=="6"
, следовательно, в первый раз
%folder%
не имеет значения НО ему присвоено значение в пределах code block
, и оно сохраняет это значение для второго запуска (поскольку selocal
для его отмены не существует) .