Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Несколько вопросов

Закрытая тема
Настройки темы
Любой язык - [решено] Несколько вопросов

Пользователь


Сообщения: 78
Благодарности: 14

Профиль | Отправить PM | Цитировать


Здравствуйте, помогите пожалуйста в этих вопросах:
1) Часто вижу у некоторых в коде такое начало "setlocal enableextensions" и\или "enabledelayedexpansion", для чего они?
2) Как в модуле ftp изменять локальную директорию с помощью системным переменных, к примеру: lcd %systemroot%.
3) Опять таки, как в модуле ftp изменять локальную директорию, если в пути имеются русские буквы, к примеру: lcd C:\Documents and Settings\admin\Рабочий стол\.
4) Есть ли команда, которая возвращала имя файла из которого они запущена? (за исключением %~n0).

Пока всё) По мере появления, буду задавать здесь.

Отправлено: 00:04, 27-03-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата:
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:
Пока всё) По мере появления, буду задавать здесь. »
Один вопрос — одна тема. Таковы правила. Я ответил здесь только в виде исключения.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:29, 27-03-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Несколько вопросов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
.NET - Несколько вопросов по C# hxygen Программирование и базы данных 3 16-11-2010 00:59
Несколько вопросов по ОС Master WEB Общий по Linux 33 02-08-2007 23:23
Несколько вопросов raingts Хочу все знать 2 30-01-2007 18:05
Несколько вопросов по C++ pva Программирование и базы данных 2 09-04-2004 08:45
Несколько вопросов об ... Sharkky Программирование и базы данных 4 08-10-2003 13:01




 
Переход