@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.
Dal momento che non ho ...\My Entry
come una chiave, ho sostituito una chiave devo.
Primo elemento: poiché i dati richiesti contengono uno spazio e lo spazio è un delimitatore predefinito, è necessario utilizzare 1,2*
come token - il primo, il secondo e il resto della linea.
La prossima po 'di difficoltà è che il dato anche contenere )
whic viene interpretata come la parentesi del FOR/f
quindi dando un errore di chiusura - nel tuo caso, \Dir1\Dir2
Non si prevede qui
Un modo per superare questo è quello di quotare, quindi rimuovere il valore assegnato a home
Ma ancora una volta, la parentesi di chiusura in home
serve a terminare la parte VERO dell'istruzione IF.
accensione sulla presenza/assenza di un valore assegnato alla HOME supera questo. Ovviamente, lo stesso si potrebbe dire per Valuename
anche se qui è nascosto un fail-to-fail.
Se la voce del Registro richiesto non viene trovato, allora le SET
s nel FOR/f
non vengono eseguite, quindi i valori delle tre variabili non vengono modificate da qualsiasi valore che possono avere prima della FOR/f
viene eseguita. Pertanto, se home
(o valuename
se si sceglie di utilizzare tale valore) ha un valore di someexistingvalue
prima che i risultati for/f
poi imprevisti possono essere presentate.
(BTW - è legittimo e più ordinato, cercando di rompere il for/f
a una o entrambe le parentesi della clausola IN
)
Qual è l'output di 'REG QUERY% KEY_NAME%/v% value_name%'? – user2033427
L'output mi mostra il nome, il tipo e i dati del Registro di sistema (ora in pieno i.e. include l'intera stringa :-)). Come dovrei quindi memorizzare la parte dei dati di esso in una variabile? Thankss! – Yos