imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Программы и Операционные системы > Операционные системы M$
Опции темы
Старый 01.09.2004, 22:02     # 1
Crazy_kettle
Junior Member
 
Регистрация: 13.05.2004
Сообщения: 128

Crazy_kettle Известность не заставит себя ждатьCrazy_kettle Известность не заставит себя ждать
Переменные окружения в NT/2k/2k3-системах.

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

Заранее спасибо.
Crazy_kettle вне форума  
Старый 01.09.2004, 22:54     # 2
Grek
::VIP::
 
Регистрация: 26.01.2003
Пол: Male
Сообщения: 832

Grek СуперБогGrek СуперБогGrek СуперБог
Grek СуперБогGrek СуперБогGrek СуперБогGrek СуперБогGrek СуперБогGrek СуперБогGrek СуперБогGrek СуперБогGrek СуперБогGrek СуперБогGrek СуперБогGrek СуперБогGrek СуперБогGrek СуперБогGrek СуперБогGrek СуперБогGrek СуперБог
Crazy_kettle
а без set попробуй
Grek вне форума  
Старый 02.09.2004, 00:56     # 3
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
есть прога setx.exe - именно для этих целей
одно ограничение - новая/изменённая переменная будет видна во всех консолях которые откроются после вызова этой команды (если 2 консоли открыть разом и в одной чего-то изменить вторая останется без апдейта)
SapeR вне форума  
Старый 04.09.2004, 21:54     # 4
Crazy_kettle
Junior Member
 
Регистрация: 13.05.2004
Сообщения: 128

Crazy_kettle Известность не заставит себя ждатьCrazy_kettle Известность не заставит себя ждать
Цитата:
Сообщение от Grek
а без set попробуй
попробую.
to SapeR
Спасибо. Помогла.
Только с ней есть другая трабла, как эту переменную окружения потом удалить. Как я понимаю, только ручками из реестра HKCU\enviroment\{имя переменной} с последующей перезагрузкой.
Crazy_kettle вне форума  
Старый 04.09.2004, 22:25     # 5
Smitis
Full Member
 
Регистрация: 26.11.2002
Адрес: Питер
Сообщения: 555

Smitis Луч света в тёмном царствеSmitis Луч света в тёмном царствеSmitis Луч света в тёмном царствеSmitis Луч света в тёмном царствеSmitis Луч света в тёмном царствеSmitis Луч света в тёмном царстве
Цитата:
Crazy_kettle:
Только с ней есть другая трабла, как эту переменную окружения потом удалить. Как я понимаю, только ручками из реестра HKCU\enviroment\{имя переменной} с последующей перезагрузкой.
Командой reg delete. А при помощи reg add, кстати, можно и добавлять (иногда так удобней)
Smitis вне форума  
Старый 05.09.2004, 21:12     # 6
Crazy_kettle
Junior Member
 
Регистрация: 13.05.2004
Сообщения: 128

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

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

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

Жду советов, предложений, вызказываний с большим нетерпением.
Crazy_kettle вне форума  
Старый 06.09.2004, 11:36     # 7
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
кушай с маслом

Код:
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 ""
SapeR вне форума  
Старый 06.09.2004, 11:41     # 8
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отсек
Пол: Male
Сообщения: 14 498

Borland - Гад и сволочь
Crazy_kettle
Создай лично под себя файлик autoexec.nt (или подправь для всех системный ) и пропиши его для всех своих консолей...
А в том файлике переменные окружения можно назначать как в обычном ДОСе...
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума  
Старый 06.09.2004, 13:20     # 9
Crazy_kettle
Junior Member
 
Регистрация: 13.05.2004
Сообщения: 128

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

Цитата:
Сообщение от Borland
пропиши его для всех своих консолей
Как?
Crazy_kettle вне форума  
Старый 06.09.2004, 16:44     # 10
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отсек
Пол: Male
Сообщения: 14 498

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

В. Высоцкий

Borland вне форума  
Старый 06.09.2004, 17:59     # 11
Smitis
Full Member
 
Регистрация: 26.11.2002
Адрес: Питер
Сообщения: 555

Smitis Луч света в тёмном царствеSmitis Луч света в тёмном царствеSmitis Луч света в тёмном царствеSmitis Луч света в тёмном царствеSmitis Луч света в тёмном царствеSmitis Луч света в тёмном царстве
Цитата:
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%
Smitis вне форума  
Старый 07.09.2004, 09:57     # 12
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
Цитата:
Crazy_kettle:
setx path Bla-h Bla-h Bla-h
echo %path%
И видим "старый" path
Цитата:
SapeR:
одно ограничение - новая/изменённая переменная будет видна во всех консолях которые откроются после вызова этой команды
то есть в текущей консоли новая переменная видна не будет
вывод - вызывай бат-файл не из консоли а шорткатом, а консоли открывай потом

З.Ы. а почему вдруг Shaper ?
SapeR вне форума  
Старый 07.09.2004, 14:41     # 13
Smitis
Full Member
 
Регистрация: 26.11.2002
Адрес: Питер
Сообщения: 555

Smitis Луч света в тёмном царствеSmitis Луч света в тёмном царствеSmitis Луч света в тёмном царствеSmitis Луч света в тёмном царствеSmitis Луч света в тёмном царствеSmitis Луч света в тёмном царстве
Цитата:
SapeR:
то есть в текущей консоли новая переменная видна не будет
А ты попробуй как я написал - сначала в текущей консоли переменную изменить. Есть такая команда - SET
Smitis вне форума  
Старый 07.09.2004, 22:51     # 14
Crazy_kettle
Junior Member
 
Регистрация: 13.05.2004
Сообщения: 128

Crazy_kettle Известность не заставит себя ждатьCrazy_kettle Известность не заставит себя ждать
to Borland
Попробую.
Цитата:
Сообщение от Smitis
А вот так:
set path=Bla-h Bla-h Bla-h
setx path %path%
echo %path%
А ты потом перезагрузись или новую консоль открой и посмотри что echo %path% выдаст.
Цитата:
Сообщение от SapeR
то есть в текущей консоли новая переменная видна не будет
вывод - вызывай бат-файл не из консоли а шорткатом, а консоли открывай потом
Кстати у тебя самого это получалось? У меня, например, "локальная" переменная не перекрывает "глобальную" (я же говорил, что открывал и новые консоли и пробовал после перезагрузки, всё равно echo %path% выдавал не то, что от него ждал)
Crazy_kettle вне форума  
Старый 08.09.2004, 12:04     # 15
Mazzi
Member
 
Аватар для Mazzi
 
Регистрация: 03.07.2002
Адрес: Черноземье
Сообщения: 261

Mazzi Луч света в тёмном царствеMazzi Луч света в тёмном царствеMazzi Луч света в тёмном царствеMazzi Луч света в тёмном царствеMazzi Луч света в тёмном царстве
а что если запускать приложение для которого ты подменяешь переменные из того же батника?
Mazzi вне форума  
Старый 08.09.2004, 20:28     # 16
Smitis
Full Member
 
Регистрация: 26.11.2002
Адрес: Питер
Сообщения: 555

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

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

Последний раз редактировалось Smitis; 08.09.2004 в 20:35.
Smitis вне форума  
Старый 08.09.2004, 22:26     # 17
Crazy_kettle
Junior Member
 
Регистрация: 13.05.2004
Сообщения: 128

Crazy_kettle Известность не заставит себя ждатьCrazy_kettle Известность не заставит себя ждать
НАКОНЕЦ-ТО. У меня получилось. Прочитал до конца вдумчиво, что выдаёт 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 (но они явно к моей проглеме не относятся).

Последний раз редактировалось Crazy_kettle; 08.09.2004 в 23:30.
Crazy_kettle вне форума  
Старый 09.09.2004, 09:54     # 18
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отсек
Пол: Male
Сообщения: 14 498

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

В. Высоцкий

Borland вне форума  
Старый 09.09.2004, 16:31     # 19
Smitis
Full Member
 
Регистрация: 26.11.2002
Адрес: Питер
Сообщения: 555

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

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


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


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




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