Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: XXLuigiMario en 27 Julio 2012, 21:18 pm



Título: [BATCH] Problema al intentar poner el resultado de findstr dentro de variable
Publicado por: XXLuigiMario en 27 Julio 2012, 21:18 pm
Hola compañeros, estoy haciendo un script en batch que comprueba que sistema operativo tienes (Windows NT, 2000, XP, Vista, etc...), la edición de Windows (Home Premium, Profesional, Ultimate, etc...), la arquitectura del sistema (x64 o x86), si lo estas ejecutando en modo seguro y/o desde una maquina virtual. Necesito meter el resultado de findstr dentro de una variable, pero me da error "No se esperaba | en este momento"

Esto es lo que quiero hacer:

Código:
@echo off
title TEST
for /f "tokens=*" %%%% in ('wmic os get caption | findstr /r /v /i "^Caption"') do (set var=%%~%%)
echo You are using %var%
pause >nul
exit

Tendría que salir "You are using Windows 7 Ultimate"

Lo he intentado de varias maneras, pero no he podido, alguien sabe como hacerlo?  :huh:


Título: Re: [BATCH] Problema al intentar poner el resultado de findstr dentro de variable
Publicado por: Eleкtro en 27 Julio 2012, 21:37 pm
Hola,

Cuando uses las pipes | dentro de un for, escápalas ^|

Código:
('wmic os get caption ^| findstr /r /v /i "^Caption"')

De todas formas, Podrías hacerlo así:
Código
  1. @echo off
  2. title TEST
  3. for /F "tokens=2 delims==" %%%% in ('wmic os get caption /format:list') do (set "Var=%%~%%")
  4. Echo You are using %var%

Saludos


Título: Re: [BATCH] Problema al intentar poner el resultado de findstr dentro de variable
Publicado por: Binary_Death en 28 Julio 2012, 05:27 am
Otro consejo, resulta que la cmd interpreta lo de dentro del cuerpo "in" entre ' como si fuera una línea así: cmd /c wmic os get caption /format_list.
Como sabrás, cualquier carácter especial entre "" pierde su valor sintáctico, así que puedes dejar el código así en vez de escapar carácter por carácter ;)

Código
  1. @echo off
  2. title TEST
  3. for /f "tokens=*" %%%% in ('"wmic os get caption | findstr /r /v /i "^Caption""') do (set var=%%~%%)
  4. echo You are using %var%
  5.  


Título: Re: [BATCH] Problema al intentar poner el resultado de findstr dentro de variable
Publicado por: XXLuigiMario en 17 Agosto 2012, 15:26 pm
Muchas gracias Electro Hacker y Binary Death por ayudarme, ya he podido resolver mi problema  :D, lo que pasa es que yo no se muy bien como usan los tokens, y a veces me lio :xD