@ECHO OFF
SETLOCAL
set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\My Entry"
set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Space Sciences Laboratory, U.C. Berkeley\BOINC Setup"
set VALUE_NAME=migrationdir
FOR /F "usebackq skip=2 tokens=1,2*" %%A IN (
`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
set "ValueName=%%A"
set "ValueType=%%B"
set Home="%%C"
)
IF DEFINED home SET home=%home:"=%
if defined Home echo Home = %Home%
if NOT defined Home echo %KEY_NAME%\%VALUE_NAME% not found.
Da ich nicht ...\My Entry
als Schlüssel verfügen, habe ich einen Schlüssel ersetzt habe ich.
Erstes Element - Da die erforderlichen Daten ein Leerzeichen enthalten und Leerzeichen ein Standardtrennzeichen ist, müssen Sie 1,2*
als Token verwenden - den ersten, zweiten und Rest der Zeile.
Die nächste kleine Schwierigkeit besteht darin, dass das Datenelement AUCH )
enthält Zugstrecke als die schließende Klammer der FOR/f
daher einen Fehler gibt interpretiert wird - in Ihrem Fall \Dir1\Dir2
hier nicht
erwartet
Ein Weg, dies zu überwinden ist, Zitat, dann die zu home
Aber noch einmal zugewiesenen Wert Streifen, die Schließ Klammer in home
dient den TRUE Teil der IF-Anweisung zu beenden.
Das Einschalten der Anwesenheit/Abwesenheit eines Wertes, der HOME zugewiesen ist, überwindet dies. Offensichtlich könnte das gleiche für Valuename
gesagt werden, obwohl es hier einen versteckten Fail-to-Fail gibt.
Wenn der angeforderte Registrierungseintrag nicht gefunden wird, dann wird die SET
s im FOR/f
nicht durchgeführt werden, damit die Werte der drei Variablen werden nicht von jedem Wert geändert sie haben können, bevor die FOR/f
ausgeführt wird. Wenn daher home
(oder valuename
, wenn Sie diesen Wert verwenden) einen Wert von someexistingvalue
vor dem for/f
hat, dann können unerwartete Ergebnisse angezeigt werden.
(BTW - es ist legitim und sauberere schau die for/f
an einem oder beiden der Klammern der IN
Klausel zu brechen)
Was ist die Ausgabe von 'REG QUERY% KEY_NAME%/v% value_name%'? – user2033427
Die Ausgabe zeigt mir die Registrierung Name, Typ und Daten (Jetzt in voller, d. H. Enthält die ganze Zeichenfolge :-)). Wie würde ich dann den Datenteil davon in einer Variablen speichern? Danke! – Yos