Tengo un problema con un archivo por lotes de compilación de un proyecto de terceros con el que estoy trabajando. Comprueba si el sistema operativo es Windows mediante el ver
comando. Desafortunadamente, parece que no puedo imprimir el ver
comando desde el archivo por lotes como lo hace en la línea de comando. La salida de la línea de comando es:
Microsoft Windows [Version 10.0.15063]
Sin embargo, cuando ejecuto un archivo por lotes:
set v ver
echo %v%
La salida es en cambio:
v=10.0
VBOX_MSI_INSTALL_PATH=C:\Program Files\Oracle\VirtualBox\
VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\
VS90COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\
Lo que parece estar dándome la versión de Windows (aunque no con todos los detalles), y luego versiones de un montón de otras cosas. ¿Hay alguna razón por la cual esto funcionaría de manera diferente o está fallando? ¿Alguien sabe cómo llamar al comportamiento original que se observa en la línea de comando? El script de terceros parece estar esperando el comportamiento de la versión de línea de comando.
Actualización: según la respuesta a continuación, descubrí que si bien esto era un problema, no era el problema lo que realmente causaba que fallara el archivo por lotes de terceros. Parece que debe ser debido a un problema con findstr
o %ERRORLEVEL% NEQ 0
(ya que el problema es que cree que no encontró la cadena "Windows" en la versión).
Windows Version ~
modo de tuberías que comando al find "."
mando y el uso que devuelve sólo el valor esperado que se puede establecer como una variable, etc.