Bath - Guardar en una variable un valor de una clave de registro

Iniciado por nhaalclkiemr, 22 Marzo 2007, 17:14 PM

0 Miembros y 1 Visitante están viendo este tema.

nhaalclkiemr

¿¿Alguien puede ayudar con el problema de convertir las barras dobles // en barras simples / y el problema de los espacios??
:huh: :huh: :huh:

Venga, espero vuestra ayuda, quería resolver el tema principal de este post pronto...

Venga, saludos ;) ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

sirdarckcat

#11

@echo off
FOR /F "tokens=2* delims==" %%I IN (reg.reg) DO (
call:PARSEA %%I
)
goto:EOF
:PARSEA
SET PP="%~1"
SET PP=%PP:\\=\%
SET PP=%PP:"=%
if "%PP:~-14%"=="amd_dc_opt.exe" (
echo La cadena encontrada fue: "%PP%"
)

nhaalclkiemr

Magnifico Sirdarckat, ahora solo me queda una pregunta...

¿A k viene este IF?:

if "%PP:~-14%"=="amd_dc_opt.exe" (
echo La cadena encontrada fue: "%PP%"
)


No se para que sirve...

He hecho este BATCH gracias a tu ayuda y pienso que funciona correctamente:

@echo off
reg export "RUTA_CLAVE" "temp.tmp"
if not %errorlevel%==0 goto error
type temp.tmp | find "NOMBRE_CLAVE" > cadena_encontrada.tmp
del /S /F /Q /A:- temp.tmp
FOR /F "tokens=2* delims==" %%I IN (cadena_encontrada.tmp) DO set var="%%I"
if "%var%"=="" goto error
FOR /F "tokens=2* delims==" %%I IN (cadena_encontrada.tmp) DO (
call:PARSEA %%I
)
goto :EOF
:PARSEA
del /S /F /Q /A:- cadena_encontrada.tmp
SET PP="%~1"
SET PP=%PP:\\=\%
SET PP=%PP:"=%
::aqui va el bat
exit
:error
::aqui va el bat de error en caso de que la RUTA_CLAVE o NOMBRE_CLAVE no exista
exit


El valor de "NOMBRE_CLAVE" queda perfectamente definido en la variable %PP% y ademas, le he añadido un control de errores que en caso de que "NOMBRE_CLAVE" o "RUTA_CLAVE" no existan te lleva a la etiqueta :error en la que puedes poner un BATCH diferente.

Por ejemplo, en nuestro caso sería:

@echo off
reg export "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" "temp.tmp"
if not %errorlevel%==0 goto error
type temp.tmp | find "amd_dc_opt" > cadena_encontrada.tmp
del /S /F /Q /A:- temp.tmp
FOR /F "tokens=2* delims==" %%I IN (cadena_encontrada.tmp) DO set var="%%I"
if "%var%"=="" goto error
FOR /F "tokens=2* delims==" %%I IN (cadena_encontrada.tmp) DO (
call:PARSEA %%I
)
goto :EOF
:PARSEA
del /S /F /Q /A:- cadena_encontrada.tmp
SET PP="%~1"
SET PP=%PP:\\=\%
SET PP=%PP:"=%
echo %PP%
exit
:error
del /S /F /Q /A:- cadena_encontrada.tmp
echo Error! La clave buscada no existe
exit


Ahora ya tenemos lo que queremos, pienso que el tema quedo zanjado, gracias ne0x y sobre todo Sirdarckat. :xD :xD

Un saludo ;) ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

sirdarckcat

ahh el if era para que el for parseara el .reg y no tuvieras que hacer el pipe al find..
pero es lo mismo :P

que bien que ya pudiste

Saludos!!