2014-06-05 11 views
5

Potrzebuję zapisać wartość (sygnaturę czasową) i pobrać ją później w plikach wsadowych. Szukałem więc SO w odpowiedzi na pytanie, jak przechowywać stałą zmienną i znaleźć setx.Jak mogę pobrać wartość po użyciu setx?

użyłem go tak:

C:\tmp>setx TIME_VAR %time% 

SUCCESS: Specified value was saved. 

Ale gdy próbuję wydrukować go ze echo nie jest tam:

C:\tmp>echo TIME_VAR 
TIME_VAR 

C:\tmp>echo %TIME_VAR% 
%TIME_VAR% 

Jak mogę odzyskać moje przechowywaną wartość?

+2

jest krytyczny do użycia 'polecenie setx'? Chodzi mi o to, czy można użyć 'set' zamiast –

+0

tak, w moim przypadku chcę, aby wartość się utrzymywała: o –

Odpowiedz

5

z doc (setx /?)

Ponieważ SETX pisze zmienne środowiska nadrzędnego w rejestrze , zmiany zaczną obowiązywać dopiero wtedy, gdy nowe okno polecenia otwarty - nie wpływają one obecne CMD lub sesja PowerShell.

+0

ah .... tak, to działało :), kiedy zamykam moją CMD i otwieram nową, działa - to wszystko, czego naprawdę chciałem, bardzo dziękuję. –

+1

W szczególności, jeśli używasz 'set' * i *' setx', opisałeś wszystkie sytuacje. Zauważ, że 'setx' może się zawiesić sporadycznie, ponieważ inne procesy nie reagują poprawnie na wiadomości rozgłoszeniowe. Jeśli jest to problem, możesz zamiast tego rozważyć zapisanie danych w pliku. –

0
setx _here_ %CD%\170901017-01 

for /f "tokens=3 delims=^ " %%i in ('reg query HKCU\Environment ^| findstr /i /c:"_here"') do (

set _my_set_x_var_=%%i 

set _here_=%%i 

) 


echo/ local and next session = = = = 
echo/ %_my_set_x_var_% 

echo/ local and next session = = = = 
echo/ %_here_% 

:eof 

wynik:

local and next session = = = = C:\Users\admin\Desktop\Res_Folder_7z\test\170901017-01 
local and next session = = = = C:\Users\admin\Desktop\Res_Folder_7z\test\170901017-01 

w tej samej sesji, a także w przyszłym

Powiązane problemy