2014-06-05 9 views
5

Ich muss einen Wert (einen Zeitstempel) speichern und später in Batch-Dateien abrufen. Also habe ich SO nach Antworten darauf gesucht, wie man eine persistente Variable speichert und setx findet.Wie erhalte ich einen Wert nach der Verwendung von Setx?

Ich benutzte es wie folgt aus:

C:\tmp>setx TIME_VAR %time% 

SUCCESS: Specified value was saved. 

Aber wenn ich versuche, es zu drucken mit echo es nicht da ist:

C:\tmp>echo TIME_VAR 
TIME_VAR 

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

Wie kann ich meine gespeicherten Wert abrufen?

+2

ist es wichtig für Sie 'setx' Befehl zu benutzen? Ich meine, ist es möglich, Set statt –

+0

yeah, in meinem Fall möchte ich den Wert beibehalten: o –

Antwort

5

aus der doc (setx /?)

Da SETX Variablen in die Master-Umgebung in der Register schreibt, wird Änderungen erst wirksam, wenn ein neues Befehlsfenster geöffnet wird - sie haben keinen Einfluss auf die aktuelle CMD oder PowerShell-Sitzung.

+0

ah .... ja, das hat funktioniert :), wenn ich meine CMD schließe und öffne eine neue es funktioniert - das ist alles was ich wirklich wollte, vielen Dank. –

+1

Insbesondere wenn Sie 'set' * und *' setx' verwenden, haben Sie alle Situationen abgedeckt. Beachten Sie, dass 'setx' gelegentlich hängen kann, weil andere Prozesse nicht korrekt auf Broadcast-Nachrichten reagieren. Wenn dies ein Problem ist, sollten Sie in Erwägung ziehen, die Daten stattdessen in einer Datei zu speichern. –

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 

Ergebnis:

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 

in derselben Sitzung und auch in der nächsten

Verwandte Themen