Показать полную графическую версию : Инициализация переменной окружения и ее проверка
stuermer01
22-08-2021, 16:30
Добрый день.
Подскажите, как в CMD присвоить значение переменной окружения windows, а потом проверить ее значение и вывести сообщение в MsgBox, если она TRUE.
megaloman
22-08-2021, 16:44
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
Для использования нового значения переменной системы по умолчанию понадобится перезагрузка.
stuermer01
23-08-2021, 12:45
спасибо, а попроще возможно? Может на VBS это будет проще?
Это делается для того, чтобы случайно автоматически не выключить комп, когда идет запись в фоне. При нажатии на кнопку выключения (cmd скрипт) будет запускаться проверка переменной и выводится сообщение, лучше в виде MsgBox VBS, поэтому понадобится отдельный VBS скрипт. А эта переменная будет устанавливаться вручную при включении записи.
stuermer01, ещё раз:
stuermer01, о какой переменной окружения идет речь? »
— какая переменная окружения? Каким именно образом:
эта переменная будет устанавливаться вручную при включении записи. »
?
stuermer01
23-08-2021, 16:05
— какая переменная окружения? »
я создам в винде вручную переменную окружения %RECORD%, в разделе Система-Переменные окружения. Или лучше в скрипте ее создавать как временную?
Каким именно образом эта переменная будет устанавливаться вручную при включении записи »
запускаю вручную отдельный скрипт для этой задачи, в нём ей присваивается значение TRUE, и всё. Другим скриптом при выключении компа проверяю её значение. Или можно автоматически эту переменную установить при включении фоновой записи IP-TV Player?
запускаю вручную отдельный скрипт для этой цели, в нём ей присваивается значение TRUE. »
Вы понимаете, что изменение значения переменной окружения будет действовать только в пределах того сеанса cmd.exe (и дочерних к нему), под которым будет исполняться пакетный файл?
https://i.imgur.com/Egz7OgP.png
Используйте временный файл с определённым содержимым. При:
включении фоновой записи IP-TV Player? »
создаёте/пересоздаёте файл, при выключении — удаляете.
megaloman
23-08-2021, 16:27
Вы понимаете, что изменение значения переменной окружения будет действовать только в пределах того сеанса cmd.exe (и дочерних к нему), под которым будет исполняться пакетный файл? »А то, что я предложил, будет работать только после перезагрузки.
Мутноватая постановка задачи. Идея другая: Вы запускаете батник, он создаст где-нибудь служебный файл-флаг, можно нулевой длины, пусть Ваш батник будет что-то делать, а по завершении удаляет этот файл. Любой другой батник или иной сценарий может проверять наличие этого файла и действовать в соответствии с его наличием/отсутствием.
С глобальной переменной окружения имхо такой номер не пройдет.
@echo off
set "sPath=C:\tmp.txt"
(if exist "%sPath%" <"%sPath%" set /p ct=)& set "ct=TRUE"& >"%sPath%" call echo %%ct%%
msg * %ct%
exit
stuermer01
23-08-2021, 18:04
Используйте временный файл с определённым содержимым. »
ок, временный пустой файл как флаг тоже подойдет.
Тогда как по-простому будет выглядеть скрипт 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:29
что-то вроде:
if exist c:\record.txt (
del "c:\record.txt"
) else (
создать файл "c:\record.txt"
)
megaloman
24-08-2021, 08:50
stuermer01, запускаю вручную отдельный скрипт для этой задачи, в нём ей присваивается значение TRUE, и всё. Другим скриптом при выключении компа проверяю её значение.допустим это работает (не работает, только допустим для понимания задачи).Как при включении фоновой записи IP-TV Player?и ее завершении эта переменная изменится? Как включается эта фоновая запись, это надо запустить программу (тогда понятно, как задача решается), или в запущенной уже программе где-то в меню надо что-то нажать? (Если при этом стартует какой-то новый процесс, тогда тоже понятно).
То есть, основной вопрос: каким образом отслеживается окончание записи, чтобы можно было менять, допустим, переменную окружения и затем ее анализировать, или удалять какой-то флаг, чтобы затем анализировать его наличие? По какому поводу пьянка? :)
Разруха не в туалетах :)
stuermer01
25-08-2021, 09:41
допустим это работает (не работает, только допустим для понимания задачи) »
Уже решена задача и все работает. Через создание и удаление файла вручную, см. выше.
А если интересны детали, то задавать вопросы надо в вежливой форме и не умничать.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.