Подтвердить что ты не робот

Как вы используете SETLOCAL в пакетном файле?

Как вы используете setlocal в пакетном файле? Я просто изучаю скрипты и хотел бы, чтобы это объяснялось мне очень просто.

У меня есть script, который останавливается и говорит < was unexpected at this time, он может иметь какое-то отношение к отсутствию каких-либо операторов setlocal в script.

4b9b3361

Ответ 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!

Угадайте, какой результат...