Сейчас на форуме: hgdagon, asfa (+4 невидимых)

 eXeL@B —› Программирование —› переменные в Windows...
Посл.ответ Сообщение

Ранг: 68.8 (постоянный)
Активность: 0.120
Статус: Участник

Создано: 05 марта 2007 05:14 · Поправил: bash
· Личное сообщение · #1

Есть такая системная переменная в 2000 и XP как %date%.
В XP в моём случае выдаёт значение 05.03.2007, в w2k какого-то хрена приписывается в начале еще и день недели (даже апплетом intl.cpl это не исправить)... Но не в этом суть!

Мне было необходимо создать переменную %year% и %month%, и я написал так:

set year=%date:~-4%
set month=%date:~-7,2%
(отсчитываю символы с конца для совместимости с w2k)

Обрадовался, думал готово и даныые записаны в реестр, но не тут-то было. Переменные хранятся только в памяти консоли, но никуда не сохраняются.
Ну я взял и вписал их в реестр через апплет sysdm.cpl через редактирование переменных, но в ответ на %year% например выдаётся date:~-4, т.е. тупо выдаётся сохранённая строка, а не значение 2007.
В общем как можно такие самодельные переменные сохранить навсегда?



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 05 марта 2007 08:13
· Личное сообщение · #2

bash, а тебе нужно автоматом через командный файл? Или ручками по мышке? Или через API?

-----
Всем привет, я вернулся




Ранг: 68.8 (постоянный)
Активность: 0.120
Статус: Участник

Создано: 05 марта 2007 09:16 · Поправил: bash
· Личное сообщение · #3

Bitfry пишет:
а тебе нужно автоматом через командный файл? Или ручками по мышке? Или через API?

хм... хороший вопрос! Извиняюсь, забыл уточнить. Работаю только с cmd-файлами в данном случае.
Автоматом и так можно в командном файлe указать эти переменные, но после его работы переменные испаряются. Просто один раз хотелось бы их сохранить раз и навсегда.
Это можно сделать? Или в реестре хранятся только строковые переменные, а те которые вычисляются - где-то в библиотеках винды зашиты?



Ранг: 68.8 (постоянный)
Активность: 0.120
Статус: Участник

Создано: 05 марта 2007 09:21
· Личное сообщение · #4

и почему эта тенденция (несохраняемость переменных) тянется с досовских времён???



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 05 марта 2007 09:37
· Личное сообщение · #5

Проблема тут в другом.
bash пишет:
Есть такая системная переменная в 2000 и XP как %date%.

Оказалось нет такой переменной .
Дело в том, что выражение %DATE% работает только в рамках команды SET, а она устанавливает среду cmd.exe, а не пользователя или системы.
Так что извини, облом.

-----
Всем привет, я вернулся




Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 05 марта 2007 09:42
· Личное сообщение · #6

А точнее говорит сама команда сет (set/?):
...
При включенной расширенной обработке команд доступны несколько переменных
среды, которые не отображаются в списке, отображаемом при вызове команды SET.
Значения этих переменных вычисляются динамически каждый раз при их извлечении.
Если пользователь явно задает переменные с одним из этих имен,
то это определение перекрывает соответствующее динамическое определение,
описанное ниже:

%CD% - раскрывается в строку текущей директории.

%DATE% - раскрывается в текущую дату, используя тот же формат команды DATE.

%TIME% - раскрывается в текущую дату, используя формат команды TIME.

%RANDOM% - раскрывается в случайное десятичное число между 0 и 32767.

%ERRORLEVEL% - раскрывается в текущее значение ERRORLEVEL

%CMDEXTVERSION% - раскрывается в текущее значение версии
расширенной обработки команд.

%CMDCMDLINE% - раскрывается в исходную командную строку, которая вызвала
командный процессор.

-----
Всем привет, я вернулся





Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 05 марта 2007 10:05
· Личное сообщение · #7

bash

А можно не set. Можно так:

"мой компьютер" щелкаешь правой кнопкой мыши -> "дополнительно" ->"переменные среды" -> "создать".
Создаешь.

(переменные среды пользователя или же системные, на выбор)

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 05 марта 2007 11:04
· Личное сообщение · #8

Crawler пишет:
А можно не set. Можно так:

Читай выше.
В том-то и прикол, что выражение %DATE% обрабатывается не системой, а командой set.
И даже AUTOEXEC.BAT в данном случае не поможет.

-----
Всем привет, я вернулся




Ранг: 68.8 (постоянный)
Активность: 0.120
Статус: Участник

Создано: 05 марта 2007 12:15
· Личное сообщение · #9

Bitfry пишет:
Дело в том, что выражение %DATE% работает только в рамках команды SET

вот это я лоханулся... Надо было мне раньше додуматься , спасибо!

Crawler пишет:
А можно не set. Можно так:
"мой компьютер" щелкаешь правой кнопкой мыши -> "дополнительно" ->"переменные среды" -> "создать".
Создаешь.
(переменные среды пользователя или же системные, на выбор)


Это верно, но заметь: то - всего лишь обычные строки, а мне нужны динамично вычисляемые значения.

Покопался у себя в загашнике и нашёл один коммандный процессор KiXtart, а в нём на удивление есть переменные и @year и @month . Вот ссылка: www.kixtart.org/binary/distrib/KiX2010_453.zip
Но стоит ли рисковать на ответственном сервере?



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 05 марта 2007 23:44
· Личное сообщение · #10

bash пишет:
Но стоит ли рисковать на ответственном сервере?

Есть же vbs ( Visual Basic Script) - там можно много чего делать.



Ранг: 68.8 (постоянный)
Активность: 0.120
Статус: Участник

Создано: 06 марта 2007 10:48
· Личное сообщение · #11

tundra37 пишет:
Есть же vbs ( Visual Basic Script)

я к сожалению с VB - на Вы..., а JS уступает вроде по возможностям , тем не менее спасибо за совет, разберусь



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 07 марта 2007 04:12
· Личное сообщение · #12

bash пишет:
я к сожалению с VB - на Вы...,

Ну он учится действительно за 21 день А главное - работает на любой Винде, даже там где снесен IE и JS не работает.



Ранг: 68.8 (постоянный)
Активность: 0.120
Статус: Участник

Создано: 07 марта 2007 07:42
· Личное сообщение · #13

tundra37 пишет:
Ну он учится действительно за 21 день

и 21 ночь


 eXeL@B —› Программирование —› переменные в Windows...
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати