Lesen Sie einen registry-Wert in eine batch-variable, Leerzeichen in value
Ich bin kämpfen, um Lesen Sie den Wert eines registry-Schlüssel in eine variable. Der registry-Wert kann, oder auch nicht, keine Leerstellen enthalten. In diesem Fall bin ich versucht zu schauen bis SDK-Pfade.
Ist es einfach, den Wert mit reg query
, aber es ist wieder in einem bemerkenswert wenig hilfreich, format:
C:\Users\Administrator\Desktop>reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKTools" /v InstallationFolder
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKTools
InstallationFolder REG_SZ C:\Program Files\Microsoft SDKs\Windows\v7.1\bin\
Der name des Schlüssels, Schlüssel-Typ und Schlüssel-Wert-sind getrennt durch eine Reihe von Leerzeichen, keine Tabulatoren.
Würden Sie denken, Sie könnten so etwas wie:
FOR /F "usebackq tokens=3* skip=2" %%L IN (
`reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKTools" /v InstallationFolder`
) DO SET sdkpath=%%L
... aber wenn der Schlüssel, der Leerzeichen enthält, wie in diesem Fall, das Ergebnis emittiert auf der Kommandozeile ist:
C:\Users\Administrator\Desktop>SET sdkpath=C:\Program
Das ist nicht hilfreich. Es scheint nicht zu sein, eine Platzhalter-variable, um zu sagen "Alle Spiele". Und man kann nicht einfach schreiben:
DO SET sdkpath=%%L %%M
... weil wenn es nicht Leerzeichen im Pfad, das wird produzieren eine wörtliche %M
(und würde auch produzieren ein Leerzeichen).
So. Gibt es irgendeine Möglichkeit, das zu tun diese einfache Sache in einer batch-Datei?
Ich geschrieben habe, die meisten meiner Werkzeuge in der Powershell (und einige Perl), aber ich muss an eine batch-Datei für die "einfache" Aufgabe call
ing visual studio /windows sdk-Umgebung Skript und dann aufrufen den code in vernünftigen Sprachen, nachdem Sie die Umgebung eingerichtet ist.
Würde man denken, dass nach 10+ Jahren cmd.exe
's Existenz, und der command.com
vor, es einfach sein würde. Hilfe?
(Ich kann Perl und die Win32::
Paketen zur Abfrage der registry, aber es hilft mir nicht, um Sie in einer batch-var...)
Mit Win2k12.
Habe ich gelesen:
- Lesen registry-Wert, der Leerzeichen enthält, mittels batch-Datei
- Shell-Skript zum Auslesen der windows-registry
und viele andere, aber keiner Griff die Allgemeinen Fall richtig Lesen einen Wert aus einem Schlüssel, ohne zu wissen, ob oder nicht es Leerzeichen enthält /wie viele.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ah dies ist eine der lästigen details über die
for /f
Befehl. Um zu Lesen, werden alle Zeichen, einschließlich der Leerzeichen, die mit der*
die vorherigen token deklariert werden muss.tokens=2,*
Der funktionalen Grund wird in der Dokumentation erwähnt.FÜR die Dokumentation