IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Операционные системы M$ (https://www.imho.ws/forumdisplay.php?f=2)
-   -   Переменные окружения в NT/2k/2k3-системах. (https://www.imho.ws/showthread.php?t=67500)

Crazy_kettle 01.09.2004 22:02

Переменные окружения в NT/2k/2k3-системах.
 
Как в консоле (cmd) (операционка W2K) командой объявить переменную, чтобы она "везде" была потом видна.
Команда set {переменная}={значение}, объявляет переменную, но она не видна в других консолях.

Заранее спасибо.

Grek 01.09.2004 22:54

Crazy_kettle
а без set попробуй

SapeR 02.09.2004 00:56

есть прога setx.exe - именно для этих целей
одно ограничение - новая/изменённая переменная будет видна во всех консолях которые откроются после вызова этой команды (если 2 консоли открыть разом и в одной чего-то изменить вторая останется без апдейта)

Crazy_kettle 04.09.2004 21:54

Цитата:

Сообщение от Grek
а без set попробуй

попробую.
to SapeR
Спасибо. Помогла.
Только с ней есть другая трабла, как эту переменную окружения потом удалить. Как я понимаю, только ручками из реестра HKCU\enviroment\{имя переменной} с последующей перезагрузкой.

Smitis 04.09.2004 22:25

Цитата:

Crazy_kettle:
Только с ней есть другая трабла, как эту переменную окружения потом удалить. Как я понимаю, только ручками из реестра HKCU\enviroment\{имя переменной} с последующей перезагрузкой.
Командой reg delete. А при помощи reg add, кстати, можно и добавлять (иногда так удобней)

Crazy_kettle 05.09.2004 21:12

Зря радовался ;(.
Если существует глобальная переменная (которая действует для всех пользователей), то поменять её не получается с помощью setx (возвращается её "старое значение"). Вот и не поймёшь, что делать?

Вообще-то проблема такова:

В универе (тачки так под управлением Win NT/2K/XP) мне хочется поменять переменную окружения PATH (возможно ещё INCLUDE и LIB). Но я, естественно, не имею там прав администрарора. Поэтому "глобально" для всех пользователей я переменные окружения не поменяю (впрочем мне это и не нужно). Естественно хочется, чтобы область видимости "изменённых" переменных не обланичивалась лишь одной консолью. Ну, конечно, ручками всё менять на раз второй надоест (в универе же не всегда на одной машине сидишь, да и админы подчищают Documents and Settings периодически), поэтому желательно, чтобы всё это можно было сделать консольными командами (чтобы дожно было запихнуль комманды в пакетный файл и потом запускать только его).

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

SapeR 06.09.2004 11:36

кушай с маслом

Код:

SetNewPath.bat
@echo off
setx backup_path %path%
setx path c:\borland;c:\delphi;.....
setx new_val ABCDEF

ResetOldPath
@echo off
setx path %backup_path%
setx backup_path ""
setx new_val ""


Borland 06.09.2004 11:41

Crazy_kettle
Создай лично под себя файлик autoexec.nt (или подправь для всех системный ;) ) и пропиши его для всех своих консолей...
А в том файлике переменные окружения можно назначать как в обычном ДОСе...

Crazy_kettle 06.09.2004 13:20

to Shaper
Спасибо, но проблему предыдущего поста это не решает.
Делаем
setx path Bla-h Bla-h Bla-h
echo %path%
И видим "старый" path

Цитата:

Сообщение от Borland
пропиши его для всех своих консолей

Как?

Borland 06.09.2004 16:44

Цитата:

Crazy_kettle:
Как?
1. Создай ярлык для ДОСовой (обязательно!) проги.
2. Правой кнопой мыша->Свойства->Вкладка "Программа"->Дополнительно
3. Пропиши пути к своим файликам autoexec и config.
4. В свойствах ярлыка измени путь и имя исполняемого файла на любые необходимые.
Дальше ярлык можно тиражировать, изменяя каждую копию... Можно даже прописать отдельные конфигурации для каждого ярлыка...

Smitis 06.09.2004 17:59

Цитата:

Crazy_kettle:
Делаем
setx path Bla-h Bla-h Bla-h
echo %path%
И видим "старый" path
А вот так:
set path=Bla-h Bla-h Bla-h
setx path %path%
echo %path%

SapeR 07.09.2004 09:57

Цитата:

Crazy_kettle:
setx path Bla-h Bla-h Bla-h
echo %path%
И видим "старый" path
Цитата:

SapeR:
одно ограничение - новая/изменённая переменная будет видна во всех консолях которые откроются после вызова этой команды
то есть в текущей консоли новая переменная видна не будет
вывод - вызывай бат-файл не из консоли а шорткатом, а консоли открывай потом

З.Ы. а почему вдруг Shaper ? :(

Smitis 07.09.2004 14:41

Цитата:

SapeR:
то есть в текущей консоли новая переменная видна не будет
А ты попробуй как я написал - сначала в текущей консоли переменную изменить. Есть такая команда - SET ;)

Crazy_kettle 07.09.2004 22:51

to Borland
Попробую.
Цитата:

Сообщение от Smitis
А вот так:
set path=Bla-h Bla-h Bla-h
setx path %path%
echo %path%

А ты потом перезагрузись или новую консоль открой и посмотри что echo %path% выдаст.
Цитата:

Сообщение от SapeR
то есть в текущей консоли новая переменная видна не будет
вывод - вызывай бат-файл не из консоли а шорткатом, а консоли открывай потом

Кстати у тебя самого это получалось? У меня, например, "локальная" переменная не перекрывает "глобальную" (я же говорил, что открывал и новые консоли и пробовал после перезагрузки, всё равно echo %path% выдавал не то, что от него ждал)

Mazzi 08.09.2004 12:04

а что если запускать приложение для которого ты подменяешь переменные из того же батника?

Smitis 08.09.2004 20:28

Цитата:

Crazy_kettle:
А ты потом перезагрузись или новую консоль открой и посмотри что echo %path% выдаст
А мне лень перегружаться - у меня и так все работает ;)
Есть еще такая утилка для ком-строки из резкита - pathman. У меня при установке/переустановке виндов запускается скрипт, из которого при помощи pathman все пути настраиваются. До этого использовался setx и reg add и тоже как-то проблем не возникало

P.S. Только что из-под Фара выполнил setx fff 12345 и открыл консоль через меню start\run - переменная fff в наличии!

Crazy_kettle 08.09.2004 22:26

НАКОНЕЦ-ТО. У меня получилось. Прочитал до конца вдумчиво, что выдаёт cmd /? и понял решить проблему.
Короче создаём строковой параметр с именет AutoRun в HKEY_CURRENT_USER\Software\Microsoft\Command Processor и значением равным выполняемой комманде при каждом запуске cmd. В моём случае я прописал туда адрес пакетного bat файла следующего содержания:
Цитата:

@echo off
set <VAR1> <Val1>
...
@echo on
Добавляется строковой параметр в реестр с помощью "start <regfile>" (возможно, можно сделать это как-нибудь получше).

Конечно я чрезвычайно благодарен всем, кто не прошёл мимо этой ветки.

P.S.
1)Все манипуляции осуществлялить под OS Win2K;
2)Кстати у cmd есть класная опция /f:on, которая включает автозавершение имён файлов (по CTRL-F) и имён папок (по CTRL-D). (конечно, это не ставниться с BASH-евым <Tab> и <Tab><Tab>, но тоже ничего).

________________________________________________

А теперь ответы на некоторые предложения:
Цитата:

Сообщение от Mazzi
а что если запускать приложение для которого ты подменяешь переменные из того же батника?

Так в большинстве слечаев неудобно. Например, если захотел подредактировать файл в текущей директории, приятно запустить "vim {имя файла}" или "start vim {имя файла}". Не хочется ведь переходить в папку bat-ника для запуска wget, nmake, iconv, rar и т.п. Да и в падлу, думаю, каждый раз переопределять переменные. (например, желательно мне, чтобы переменная home уже была объявлена перед каждым запуском vim'a).

Цитата:

Сообщение от Smitis
А мне лень перегружаться - у меня и так все работает
....
Только что из-под Фара выполнил setx fff 12345 и открыл консоль через меню start\run - переменная fff в наличии!

А у тебя переменная (глобальная) fff уже существовала? (что-то я сомневаюсь)
У меня при определении новой переменной окружения всё происходит как положено (и сразу видна, и вновь открывающихся консолях и после перезакрузки), но вот при переопределении глобальных ... Ты попробуй пожалуйста "переопределить" переменную path и результаты (вместе с названием опереционкой) в студию.

to Borland
Не подскажешь, какая у тебя операционка. Дело в том, что у меня в свойствах нет вкладки "программа". Есть только вкладки General (общие), Shortcut(ярлык), Options(опции), Font(шрифт), Layout (положение), Colors(цвета), Security(безопасность) {У меня винда английская}. Кнопки, флажка more, additional нигде. Кнопки advanced... есть только на вкладках General и Security (но они явно к моей проглеме не относятся).

Borland 09.09.2004 09:54

Цитата:

Crazy_kettle:
Не подскажешь, какая у тебя операционка. Дело в том, что у меня в свойствах нет вкладки "программа". Есть только вкладки General (общие), Shortcut(ярлык), Options(опции), Font(шрифт), Layout (положение), Colors(цвета), Security(безопасность) {У меня винда английская}. Кнопки, флажка more, additional нигде. Кнопки advanced... есть только на вкладках General и Security (но они явно к моей проглеме не относятся).
Такая вкладка есть только в .pif-ярлыках. В .lnk отсутствует как класс... Именно поэтому я и предлагал обходной метод создания ярлыка - сначала ярлык на ДОС-программу (он всегда .pif)), его настройка, а потом исправление пути к программе...
А вкладки одинаковы что в 2k, что в XP, что в 2k3... (у меня - XP).

Smitis 09.09.2004 16:31

Цитата:

Crazy_kettle:
А у тебя переменная (глобальная) fff уже существовала? (что-то я сомневаюсь)
У меня при определении новой переменной окружения всё происходит как положено (и сразу видна, и вновь открывающихся консолях и после перезакрузки), но вот при переопределении глобальных ... Ты попробуй пожалуйста "переопределить" переменную path и результаты (вместе с названием опереционкой) в студию.
Никак не пойму, почему у тебя такая проблема. Только что переопределил вчерашнюю fff - переопределилась. Переопределил обе path через setx (глобальную и пользовательскую) - переопределились. Проверил через MyComputer\ Properties\ Advanced\ EnvironmentVariables - в переменных path, то, что задал. И в новой консоли тоже.
Поэксперементировал, создавая и глобальные и пользовательские переменные - уже созданные нормально переопределяются, локальные перекрывают глобальные. Для себя вывод сделал однозначный - под моей ситемой всё работает как надо, траблов никаких с переменными нет. Хотя я и подозревал, что всё именно так ;)
Система Windows XP, но, наскольку я понимаю, в линейке NT различий при работе с переменными быть не должно

P.S. Переменная path, кстати, находится на особом положении. Локальная не перекрывает глобальную, а добавляется к ней.


Часовой пояс GMT +4, время: 17:46.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.