Цитата:
1) Часто вижу у некоторых в коде такое начало "setlocal enableextensions" и\или "enabledelayedexpansion", для чего они?
|
Код:

setlocal /?
Сама команда «setlocal» применяется для того, чтобы изменения в используемых переменных окружения были локальными, т.е. не затронули переменные окружения родительского контекста:
читать дальше »
Код:

@echo off
set sValue=Рабы не мы. Мы не рабы.
echo %sValue%
setlocal
echo %sValue%
set sValue=Мама мыла раму
echo %sValue%
endlocal
echo %sValue%
exit /b 0
Цитата:
Код: 
Рабы не мы. Мы не рабы.
Рабы не мы. Мы не рабы.
Мама мыла раму
Рабы не мы. Мы не рабы.
|
Как Вы видите, после команды «setlocal» переменная окружения «sValue» сохраняет своё значение. Но если ей попытаться присвоить новое значение — появляется
новая переменная окружения с тем же именем «sValue», доступная только внутри контекста «setlocal»/«endlocal», а доступ к
старой переменной окружения «sValue» теряется.
После использования команды «endlocal»
новая переменная окружения «sValue» теряется вместе с контекстом, а доступ к
старой переменной окружения «sValue» восстанавливается.
Чаще же всего «setlocal» применяется для использования с параметром «ENABLEDELAYEDEXPANSION» (параметр «ENABLEEXTENSIONS» включён по умолчанию; умолчания можно изменить путём правки реестра или указания параметров при вызове командного процесора), позволяющем использовать отложенное раскрытие переменных. Подробное описание с примером есть в:
Код:

set /?
Также рекомендую это:
Setlocal - Local variables
EnableDelayedExpansion
Batch files - The SET command: Windows NT 4..Windows 7 Syntax
Batch Files - Variable Expansion in FOR Loops
Цитата DesmondTruman:
2) Как в модуле ftp изменять локальную директорию с помощью системным переменных, к примеру: lcd %systemroot%. »
|
Никак. «ftp.exe» — это отдельное приложение. Максимум, что Вы можете сделать — использовать сценарий при вызове «ftp.exe», а при создании самого сценария из пакетного файла использовать переменные окружения.
Цитата DesmondTruman:
4) Есть ли команда, которая возвращала имя файла из которого они запущена? (за исключением %~n0). »
|
Нет.
Цитата DesmondTruman:
Пока всё) По мере появления, буду задавать здесь. »
|
Один вопрос — одна тема. Таковы правила. Я ответил здесь только в виде исключения.