[BATCH] Problema al intentar poner el resultado de findstr dentro de variable

Iniciado por XXLuigiMario, 27 Julio 2012, 21:18 PM

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

XXLuigiMario

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:

@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:

Eleкtro

#1
Hola,

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

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

De todas formas, Podrías hacerlo así:
Código (dos) [Seleccionar]
@echo off
title TEST
for /F "tokens=2 delims==" %%%% in ('wmic os get caption /format:list') do (set "Var=%%~%%")
Echo You are using %var%
pause >nul
exit


Saludos








Binary_Death

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 (dos) [Seleccionar]

@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

XXLuigiMario

#3
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