Как вы используете SETLOCAL в пакетном файле?
Как вы используете setlocal
в пакетном файле? Я просто изучаю скрипты и хотел бы, чтобы это объяснялось мне очень просто.
У меня есть script, который останавливается и говорит < was unexpected at this time
, он может иметь какое-то отношение к отсутствию каких-либо операторов setlocal
в script.
Ответы
Ответ 1
Вы делаете первую строку SETLOCAL
. Этот пример приведен в следующей статье:
rem *******Begin Comment**************
rem This program starts the superapp batch program on the network,
rem directs the output to a file, and displays the file
rem in Notepad.
rem *******End Comment**************
@echo off
setlocal
path=g:\programs\superapp;%path%
call superapp>c:\superapp.out
endlocal
start notepad c:\superapp.out
Наиболее частое использование SETLOCAL
заключается в том, чтобы включать расширения команд и допускать замедленное расширение переменных:
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
Для получения дополнительной информации о SETLOCAL
см. Ссылка в командной строке в Microsoft TechNet.
Прямая ссылка на Setlocal
Ответ 2
Предположим, что этот код:
If "%getOption%" equ "yes" (
set /P option=Enter option:
echo Option read: %option%
)
Предыдущий код НЕ будет работать, потому что значение% option% заменяется только один раз, когда команда IF обрабатывается (до ее выполнения). Вам нужно "задержать" расширение переменной до тех пор, пока команда SET/P не изменит значение переменной:
setlocal EnableDelayedExpansion
If "%getOption%" equ "yes" (
set /P option=Enter option:
echo Option read: !option!
)
Проверьте это:
set var=Before
set var=After & echo Normal: %var% Delayed: !var!
Угадайте, какой результат...