Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: tomasscfgcu en 14 Octubre 2013, 15:09 pm



Título: Sobre archivos .Bat
Publicado por: tomasscfgcu en 14 Octubre 2013, 15:09 pm
Buenos dias necesito ayuda con el siguiente codigo, me encuentro realizando un codigo que me permita obtener el sistema operativo de una PC y luego poder tener diferentes opciones como un menu, de la forma que lo estoy haciendo es enviarlo hacia un archivo .txt luego quisiera almacenarlo en una variable para luego poder jugar con ese valor pero entonces no se como cargar el resultado.

Este es el codigo que me lo envia para un .txt la version del S.O. que utiliza la PC.
@echo off
ver >ayuda.txt
pause

Luego quisiera guardarlo en una variable para trabajar con ese valor.


Título: Re: Sobre archivos .Bat
Publicado por: Eleкtro en 14 Octubre 2013, 15:23 pm
For /F

-> http://ss64.com/nt/for_f.html

Código:
For /F %%X in ('Ver') Do ()...

Saludos


Título: Re: Sobre archivos .Bat
Publicado por: tomasscfgcu en 14 Octubre 2013, 15:46 pm
Pero este codigo es el que me permite guardar en una variable el valor de la version del sistema que estaba almacenado en el txt.

ese codigo lo pongo en el mismo archivo .bat que fue el que utilice para optener el valor de la variable Ver y que envie al txt.


Título: Re: Sobre archivos .Bat
Publicado por: daryo en 14 Octubre 2013, 16:21 pm
Pero este codigo es el que me permite guardar en una variable el valor de la version del sistema que estaba almacenado en el txt.

ese codigo lo pongo en el mismo archivo .bat que fue el que utilice para optener el valor de la variable Ver y que envie al txt.
con for puedes coger la salida de un comando y partirla en pedazos , una ves partida puedes guardar en una variable lo que necesites


Título: Re: Sobre archivos .Bat
Publicado por: Eleкtro en 14 Octubre 2013, 16:28 pm
Añado: Almacenar información en archivos de texto para luego leer esa información no es necesario, es realizar pasos innecesarios, ya que puedes leer/almacenar la información de salida del comando diréctamente usando For.

Saludos


Título: Re: Sobre archivos .Bat
Publicado por: tomasscfgcu en 16 Octubre 2013, 16:29 pm
Estas son las dos formas que e estado probando pero no logro el resultado esperado.
en la primera prueba no logro capturar el resultado de la variable VER para luego comparar y en la segunda prueba solo me daja comparar poniendole una coma en los espasios del resultado real de la variable. Microsoft Windows XP [Versión 5.1.2600]
Prueba 1
Código:
ver> versión.txt
FOR /F "tokens=3 delims=" %%G IN (versión.txt) DO @echo %%G
Prueba 2
Código:
FOR /F "tokens=* delims=," %%G IN (%ver%) DO @echo Versión %%G
Pause


Título: Re: Sobre archivos .Bat
Publicado por: Eleкtro en 16 Octubre 2013, 17:57 pm
Hola,
Debes usar las etiquetas para insertar código, es una norma del foro, puedes ver las instrucciones en mi firma.

Solución:

· VER
Código
  1. For /F "Tokens=4 Delims=] " %%A in ('ver') Do (Echo %%A)

Output:
Código:
5.1.2600

· WMIC
Código
  1. For /F %%# in (
  2.    'wmic os get version ^| FINDSTR "[0-9]"'
  3. ) do (
  4.    Echo %%#
  5. )

Output:
Código:
5.1.2600

Saludos


Título: Re: Sobre archivos .Bat
Publicado por: tomasscfgcu en 17 Octubre 2013, 17:36 pm
 Perfecto el · WMIC que fue la segunda opcion que me diste, es cierto que fuciona y da el resultado esperadopero para lo que necesito que es comparar con ese valor, no se como pueda hacerlo ya que el no lo puedo almacenar en una variable par luego poder dercir si es igual o no.

Me muestra este valor se es XP: 5.1.2600 pero si ahora yo quiero compara ese valor con 500 por ejemplo y decir si es igual realiza la primera opcion y sino realiza la segunda.

Gracias de antemano, por la ayuda prestada.


Título: Re: Sobre archivos .Bat
Publicado por: Eleкtro en 17 Octubre 2013, 18:22 pm
La pregunta es muy básica, podrías resolverla sin ayuda leyendo algún manual básico de Batch.

Código
  1. @Echo OFF & Setlocal EnableDelayedExpansion
  2.  
  3. For /F %%# in (
  4.    'wmic os get version ^| FINDSTR "[0-9]"'
  5. ) do (
  6.    Set "Build=%%#" & REM Output: 6.2.9200
  7.    Set /A "Build=!Build:.=!" & REM Output: 629200
  8.    if !Build! GTR 500 (
  9.     Echo Yes
  10.    ) Else (
  11.     Echo No
  12.    ) & REM Output: Yes
  13. )
  14.  
  15. Pause&Exit

Un saludo!