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.
Un saludo