J'essaie d'attribuer la sortie d'une commande à une variable - en tant que, j'essaie de définir la version flash actuelle sur une variable. Je sais que c'est faux, mais voici ce que j'ai essayé:
set var = requête d'interrogation hklm\SOFTWARE\Macromedia\FlashPlayer\CurrentVersion>
ou
requête d'enregistrement hklm\LOGICIEL\Macromedia\FlashPlayer\CurrentVersion >> set var
Oui, comme vous pouvez le voir, je suis un peu perdu. Toute aide est appréciée!
Une méthode a déjà été conçue, mais de cette façon, vous n’avez pas besoin d’un fichier temporaire.
for /f "delims=" %%i in ('command') do set output=%%i
Cependant, je suis sûr que cela a ses propres exceptions et limitations.
Ce post a une méthode pour y parvenir
de (zvrba) Vous pouvez le faire en redirigeant d'abord la sortie vers un fichier. Par exemple:
echo zz > bla.txt
set /p VV=<bla.txt
echo %VV%
Vous ne pouvez pas affecter une sortie de processus directement dans une var, vous devez analyser la sortie avec une boucle For/F:
@Echo OFF
FOR /F "Tokens=2,*" %%A IN (
'Reg Query "HKEY_CURRENT_USER\Software\Macromedia\FlashPlayer" /v "CurrentVersion"'
) DO (
REM Set "Version=%%B"
Echo Version: %%B
)
Pause&Exit
PS: Modifiez la clé de registre utilisée si nécessaire.
Ok, voici quelques exemples plus complexes pour l’utilisation de For/F
:: Main
@Prompt -$G
call :REGQUERY "Software\Classes\CLSID\{3E6AE265-3382-A429-56D1-BB2B4D1D}"
@goto :EOF
:REGQUERY
:: Checks HKEY_LOCAL_MACHINE\ and HKEY_CURRENT_USER\
:: for the key and lists its content
@call :EXEC "REG QUERY HKCU\%~1"
@call :EXEC "REG QUERY "HKLM\%~1""
@goto :EOF
:EXEC
@set output=
@for /F "delims=" %%i in ('%~1 2^>nul') do @(
set output=%%i
)
@if not "%output%"=="" (
echo %1 -^> %output%
)
@goto :EOF
Je l'ai emballé dans la sous-fonction : EXEC afin que tous ses détails de mise en œuvre vilains n'entrent pas dans le script principal. code:
echo %1 -^>...
donc il ^ rend possible la sortie d'un '>' via echo ce qui n'aurait pas été possible d'autre.@if not "%output%"==""
ressemble à celle de la plupart des langages de programmation courants, elle est peut-être différente de ce à quoi vous vous attendiez (si vous n'êtes pas habitué à MS-batch). Enlevez bien le '@' au début. Étudiez le résultat. Changez-le en not %output%==""
- réexécutez et demandez-vous pourquoi cela ne fonctionne pas. ;)C'est un travail pour moi
@FOR /f "delims=" %i in ('reg query hklm\SOFTWARE\Macromedia\FlashPlayer\CurrentVersion') DO set var=%i
echo %var%