elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [AYUDA] [BATCH] Batch sencillo para comparar un valor del registro de windows
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [AYUDA] [BATCH] Batch sencillo para comparar un valor del registro de windows  (Leído 5,100 veces)
Davigotchi

Desconectado Desconectado

Mensajes: 16


Ver Perfil
[AYUDA] [BATCH] Batch sencillo para comparar un valor del registro de windows
« en: 25 Febrero 2020, 20:05 pm »

Buenas tardes a todos:

Quería hacer un batch sencillo en el cual se pueda comparar un valor concreto de una cadena del registro de windows... estoy mirando REG QUERY y REG COMPARE y me estoy volviendo loco :(

Quería exactamente saber el valor de este registro (Se consultarlo de esta manera):

REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2" /v "1004"

Y me devuelve:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2
    1004    REG_DWORD    0x3

- Es decir que el valor de "1004" es 0x3
 
Entonces quería hacer un batch en el cual si el valor de "1004" es diferente a "0x3" pues por ejemplo ejecutar un "REG IMPORT C:\IE11.reg" (Es decir que cuando el valor "1004" es diferente a "0x3" pues importo toda la configuración que tengo como por defecto de un archivo .REG)...

Espero haberme explicado bien.
Alguien me podría ayudar¿?

Muchisimas gracias por adelantado.


« Última modificación: 25 Febrero 2020, 20:09 pm por Davigotchi » En línea

Davigotchi

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: [AYUDA] [BATCH] Batch sencillo para comparar un valor del registro de windows
« Respuesta #1 en: 25 Febrero 2020, 21:02 pm »

Buenas tardes de nuevo:

Estoy mirando con vbscript... a ver que tal se me dá, jajaja

Creo que con el comando "RegRead"...


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.159



Ver Perfil
Re: [AYUDA] [BATCH] Batch sencillo para comparar un valor del registro de windows
« Respuesta #2 en: 26 Febrero 2020, 02:29 am »

Saludos,

- En Batch se acostumbra resolverse la vida usando Find para encontrar cosas:

Código
  1. @Echo Off
  2.  
  3. Set clave="HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2"
  4. Set valor="1004"
  5. ( Reg Query %clave% /V %valor% 2>&1 | Find "0x3" ) >nul
  6.  Echo Valor no encontrado
  7. ) Else (
  8.  Echo Valor encontrado
  9. )
  10.  

- También podrías usar For /F para filtrar el resultado de un comando y sacar tokens para subdividirlo:

Código
  1. @Echo Off
  2.  
  3. Set clave="HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2"
  4. Set valor="1004"
  5. For /F "tokens=3" %%a In ('Reg Query %clave% /V %valor% 2^>^&1') Do (
  6.  If "%%a" == "0x3" (
  7.    Echo Valor encontrado
  8.  ) Else (
  9.    Echo Valor no encontrado
  10.  )
  11. )
  12.  
En línea

.:Xx4NG3LxX:.

Desconectado Desconectado

Mensajes: 203



Ver Perfil WWW
Re: [AYUDA] [BATCH] Batch sencillo para comparar un valor del registro de windows
« Respuesta #3 en: 26 Febrero 2020, 02:56 am »

El Find, siempre tan confiable...
En línea

"Quizá Batch no sea un lenguaje de programación, pero no obstante deja de ser útil. Asi que no anden diciendo «Que ganas de perder el tiempo»"
Davigotchi

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: [AYUDA] [BATCH] Batch sencillo para comparar un valor del registro de windows
« Respuesta #4 en: 26 Febrero 2020, 17:34 pm »

Buenas tardes:

Muchísimas gracias. Sois unos cracks.

Tmb estuve con vbs y conseguí lo siguiente:

Dim WshShell, bKey
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim valor
Set objshell = createobject("wscript.shell")
Valor = objshell.regread("HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2\1004")
If  valor <> 0 then
   WshShell. RegWrite"HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2\1004", 0, "REG_DWORD"
End if

Pero ahora si la clave a comparar no existe me da un error y yo querría que si el VALOR es Distinto de CERO o NO EXISTE... se ejecute... Alguna idea¿?¿?

Gracias de nuevooooo
En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.159



Ver Perfil
Re: [AYUDA] [BATCH] Batch sencillo para comparar un valor del registro de windows
« Respuesta #5 en: 26 Febrero 2020, 23:36 pm »

- Cuando ocurre un error en VBScript se actualiza el Objeto Err con unos atributos, de los cuales se puede resaltar Err.Number y Err.Description, estos muestra un número entero distintivo y un mensaje de error distintivo correspondientemente.

- Para tomar el control de errores en VBScript se hace uso de la sentencia On Error Resume Next, de tal manera que al producirse un error no se muestra dicho error, sino, se continúa con la siguiente instrucción esperando a que el programador ponga las instrucciones adecuadas para "tomar el control" en caso de dicho error. Luego se restablece el Objeto Err con Err.Clear.

Código
  1. On Error Resume Next
  2.  
  3. Set oShell = WScript.CreateObject("WScript.Shell")
  4. dato = oShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2\1004")
  5.  
  6. If Err.Number <> 0 then  'Ha ocurrido un error
  7.  If Err.Number = -2147024894 Then
  8.    WScript.Echo("Valor 1004 no existe")
  9.  End If
  10.  WScript.Quit
  11. Else                     'Valor encontrado
  12.  WScript.Echo("Valor 1004 existe y tiene el dato: " & dato)
  13. End if
  14.  
En línea

Davigotchi

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: [AYUDA] [BATCH] Batch sencillo para comparar un valor del registro de windows
« Respuesta #6 en: 27 Febrero 2020, 20:40 pm »

Buenas tardes:

Muchiiiisimas gracias.

A parte de funcionar perfectamente, ya lo he adaptado  a lo que necesito...

Perfectamente explicado y entendido.

Muchas gracias de nuevo. Un crack si señor. :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
batch sencillo para apagar rápido el ordenador
Scripting
bluerider07 7 11,988 Último mensaje 29 Septiembre 2007, 15:04 pm
por Siuto
[batch] comparar una variable con varios valores « 1 2 »
Scripting
moikano→@ 13 17,293 Último mensaje 22 Diciembre 2010, 19:25 pm
por moikano→@
[Batch] obtener clave del registro de Windows « 1 2 »
Scripting
jimbus80 10 14,847 Último mensaje 11 Febrero 2011, 22:04 pm
por jimbus80
[AYUDA][BATCH] Usar echo vacio en BATCH sin que diga que esta desactivado?
Scripting
Noxware 2 8,646 Último mensaje 6 Mayo 2014, 17:46 pm
por PedroDJavier
ayuda con algo sencillo (batch)
Scripting
ekeo8 0 2,203 Último mensaje 3 Diciembre 2015, 19:52 pm
por ekeo8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines