Batch: Wert aus Registry auslesen

Alles rund um die Software-Entwicklung: Programme, Skripte, Projekte etc.
Antworten
Benutzeravatar
Viprex
Vice Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 4590
Registriert: 08.03.2004, 18:33
Wohnort: Hohenlockstedt
Kontaktdaten:

Batch: Wert aus Registry auslesen

Ungelesener Beitrag von Viprex » 19.05.2009, 13:41

Ich möchte folgendes per Batch Skript machen (kein VBS!).

Die Umgebungsvariable PATH soll einen zusätzlichen Suchpfad erhalten.

Beispiel PATH:

Code: Alles auswählen

Alt: C:\Programme\MiKTeX 2.7\miktex\bin;%SystemRoot%\system32
Neu: C:\Programme\MiKTeX 2.7\miktex\bin;%SystemRoot%\system32;C:\programme\neues programm
Meine Vorgehensweise war (mittlerweile nutze ich einen anderen Weg):
1. reg query und die PATH Variable auslesen
2. Werte in eine Variable A speichern
3. A mit zusätzlichem Pfad konkatenieren und in Variable B speichern
4. reg add mit Variable B.

Dann steht in der Registry alles korrekt. Ich scheitere aber schon an Schritt 1. Eine andere Lösung habe ich bereits gefunden, möchte aber dennoch wissen, wie ich Schritt 1 korrekt durchführen könnte.

Code: Alles auswählen

@for /f "tokens=3" %%i in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do @Set x=%%i
@echo %x%
Ergebnis: C:\programme\miktex

oder

Code: Alles auswählen

@for /f "tokens=3 delims= " %%i in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do @Set x=%%i
@echo %x%
Ergebnis: VERSION


Das richtige Ergebnis ist leider nicht dabei. Ich will also eigenlich, dass die Ausgabe von reg query

Code: Alles auswählen

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
    Path        REG_EXPAND_SZ   C:\Programme\MiKTeX 2.7\miktex\bin;%SystemRoot%\
system32
eigentlich das hier ist

Code: Alles auswählen

C:\Programme\MiKTeX 2.7\miktex\bin;%SystemRoot%\
system32 
Ich bekomme den Kram aber nicht richtig geparst, sodass der gesamte Wert des Registry Schlüssels in einer Variablen steht. Kann mir dabei jemand helfen?

PS: Wie gesagt, eine andere Lösung für das Ändern der PATH Variable habe ich bereits gefunden. Ich nutze einfach die Variable %PATH% in der Kommandozeile und hänge da den Pfad dran. %PATH% gibt mir nämlich genau das aus, was ich mit reg query händisch auszulesen versuche. Mich interessiert jetzt einfach nur noch aus Neugierde, wie ich das auch mit reg query und der for-Schleife machen kann.
Nachts essen ist der Hit!
Kommt gleich neben tagsüber essen :)

Benutzeravatar
Viprex
Vice Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 4590
Registriert: 08.03.2004, 18:33
Wohnort: Hohenlockstedt
Kontaktdaten:

Ungelesener Beitrag von Viprex » 20.05.2009, 09:40

Niemand eine Idee, wie ich mit der For Schleife das Problem mit dem Leerzeichen in PATH Pfaden umgehen kann?
Nachts essen ist der Hit!
Kommt gleich neben tagsüber essen :)

Benutzeravatar
quadpumped
Vice Admiral
Beiträge: 4737
Registriert: 16.03.2004, 15:15
Wohnort: 53773 Hennef

Ungelesener Beitrag von quadpumped » 20.05.2009, 10:16

nimmt man solche Pfade nicht in Anführungszeichen??

Benutzeravatar
Viprex
Vice Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 4590
Registriert: 08.03.2004, 18:33
Wohnort: Hohenlockstedt
Kontaktdaten:

Ungelesener Beitrag von Viprex » 20.05.2009, 12:30

Welche Pfade meinst du? In meinem Befehl gebe ich ja auch gar keinen Pfad direkt an.
Nachts essen ist der Hit!
Kommt gleich neben tagsüber essen :)

H3LL S3RV4NT
Admiral
Beiträge: 14655
Registriert: 08.03.2004, 17:24
Wohnort: Magdeburg

Ungelesener Beitrag von H3LL S3RV4NT » 20.05.2009, 19:46

Das Problem ist aber das Leerzeichen im Pfad...
>kq

Benutzeravatar
Viprex
Vice Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 4590
Registriert: 08.03.2004, 18:33
Wohnort: Hohenlockstedt
Kontaktdaten:

Ungelesener Beitrag von Viprex » 21.05.2009, 07:49

Die Lösung sieht so aus:

Code: Alles auswählen

@for /f "tokens=2*" %%i in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do @Set "x=%%~j" 
@echo %x%
Nachts essen ist der Hit!
Kommt gleich neben tagsüber essen :)

Antworten