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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Инициализация переменной окружения и ее проверка

Ответить
Настройки темы
CMD/BAT - Инициализация переменной окружения и ее проверка

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


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

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


Добрый день.

Подскажите, как в CMD присвоить значение переменной окружения windows, а потом проверить ее значение и вывести сообщение в MsgBox, если она TRUE.

Отправлено: 16:30, 22-08-2021

 

Ветеран


Contributor


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

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


stuermer01, о какой переменной окружения идет речь? это путь к папке, файлу? Чем проверяется ее значение?
Код: Выделить весь код
@Echo Off
cls
	Set "Param=kuku123"
	Set "Value=tra la la 333"
	Set "RegDir=HKEY_CURRENT_USER\Environment"

	REG ADD %RegDir% /V %Param% /d "%Value%" /f

	Set "ValueTest="
	For /F "usebackq skip=2 tokens=2* delims= " %%i In (`2^>nul REG QUERY  %RegDir% /v %Param%`) Do Set "ValueTest=%%j"

	If /I "%Value%"=="%ValueTest%" (Echo Value=%Value% == %ValueTest%=ValueTest) Else (Echo Value=%Value% ^<^> %ValueTest%=ValueTest)
pause                                                       
Exit /B 0
А MsgBox - это не CMD, а VBS
Для использования нового значения переменной системы по умолчанию понадобится перезагрузка.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 22-08-2021 в 18:39.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:44, 22-08-2021 | #2



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

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


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


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

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


спасибо, а попроще возможно? Может на VBS это будет проще?

Это делается для того, чтобы случайно автоматически не выключить комп, когда идет запись в фоне. При нажатии на кнопку выключения (cmd скрипт) будет запускаться проверка переменной и выводится сообщение, лучше в виде MsgBox VBS, поэтому понадобится отдельный VBS скрипт. А эта переменная будет устанавливаться вручную при включении записи.

Отправлено: 12:45, 23-08-2021 | #3


Ветеран


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

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


stuermer01, ещё раз:
Цитата megaloman:
stuermer01, о какой переменной окружения идет речь? »
какая переменная окружения? Каким именно образом:
Цитата stuermer01:
эта переменная будет устанавливаться вручную при включении записи. »
?

Отправлено: 14:08, 23-08-2021 | #4


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


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

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


Цитата Iska:
— какая переменная окружения? »
я создам в винде вручную переменную окружения %RECORD%, в разделе Система-Переменные окружения. Или лучше в скрипте ее создавать как временную?

Цитата Iska:
Каким именно образом эта переменная будет устанавливаться вручную при включении записи »
запускаю вручную отдельный скрипт для этой задачи, в нём ей присваивается значение TRUE, и всё. Другим скриптом при выключении компа проверяю её значение. Или можно автоматически эту переменную установить при включении фоновой записи IP-TV Player?

Последний раз редактировалось stuermer01, 23-08-2021 в 16:13.


Отправлено: 16:05, 23-08-2021 | #5


Ветеран


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

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


Цитата stuermer01:
запускаю вручную отдельный скрипт для этой цели, в нём ей присваивается значение TRUE. »
Вы понимаете, что изменение значения переменной окружения будет действовать только в пределах того сеанса cmd.exe (и дочерних к нему), под которым будет исполняться пакетный файл?
Скрытый текст

Используйте временный файл с определённым содержимым. При:
Цитата stuermer01:
включении фоновой записи IP-TV Player? »
создаёте/пересоздаёте файл, при выключении — удаляете.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:19, 23-08-2021 | #6


Ветеран


Contributor


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

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


Цитата Iska:
Вы понимаете, что изменение значения переменной окружения будет действовать только в пределах того сеанса cmd.exe (и дочерних к нему), под которым будет исполняться пакетный файл? »
А то, что я предложил, будет работать только после перезагрузки.
Мутноватая постановка задачи. Идея другая: Вы запускаете батник, он создаст где-нибудь служебный файл-флаг, можно нулевой длины, пусть Ваш батник будет что-то делать, а по завершении удаляет этот файл. Любой другой батник или иной сценарий может проверять наличие этого файла и действовать в соответствии с его наличием/отсутствием.
С глобальной переменной окружения имхо такой номер не пройдет.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 23-08-2021 в 16:37.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:27, 23-08-2021 | #7


Ветеран


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

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


Код: Выделить весь код
@echo off
set "sPath=C:\tmp.txt"

(if exist "%sPath%" <"%sPath%" set /p ct=)& set "ct=TRUE"& >"%sPath%" call echo %%ct%%
msg * %ct%
exit
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:08, 23-08-2021 | #8


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


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

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


Цитата Iska:
Используйте временный файл с определённым содержимым. »
ок, временный пустой файл как флаг тоже подойдет.

Тогда как по-простому будет выглядеть скрипт toggle-record-flag.cmd, который при запуске будет создавать файл, если его нет и удалять его, если он есть?

Скрытый текст
@echo off
set "sPath=C:\tmp.txt"

(if exist "%sPath%" <"%sPath%" set /p ct& set "ct=TRUE"& >"%sPath%" call echo %%ct%%
msg * %ct%
exit

здесь %ct% это тоже переменная окружения? Надо без неё уже. C "msg *" отличная идея, выйдет окошко и не надо VBS, спасибо.

Последний раз редактировалось stuermer01, 23-08-2021 в 18:22.


Отправлено: 18:04, 23-08-2021 | #9


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


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

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


что-то вроде:

Скрытый текст
if exist c:\record.txt (
del "c:\record.txt"
) else (
создать файл "c:\record.txt"
)

Отправлено: 18:29, 23-08-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Инициализация переменной окружения и ее проверка

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Проверка переменной vngreez@vk Скриптовые языки администрирования Windows 6 08-05-2017 18:57
CMD/BAT - [решено] Без раскрытия системной переменной окружения janxp Скриптовые языки администрирования Windows 11 09-02-2014 06:35
Проверка переменной Алексей Zn Вебмастеру 1 20-09-2013 14:41
CMD/BAT - поиск файла по путям, заданным в произвольной переменной окружения CyberMuesli Скриптовые языки администрирования Windows 4 25-06-2012 14:23
пишу переменную окружения тип Volatile wscript скриптом но не могу ее использовать .? egor_siv Microsoft Windows NT/2000/2003 9 25-10-2006 13:32




 
Переход