如何使批量变量=命令答案?

时间:2013-12-09 16:17:59

标签: batch-file set

我看过很多地方。也许我没有问过正确的问题,但我现在在这里。我正在制作一个批处理文件来感知操作系统是什么。

我目前的尝试:

set os=systeminfo |find "OS Name"

编辑:WINDOWS批处理文件

编辑:如果命令在控制台中返回一行。如何创建变量=返回的字符串。 (这是我的主要问题。如果我不是很清楚,请抱歉。)

示例:

varName = Command | find“String”

6 个答案:

答案 0 :(得分:2)

@echo off
for /f "delims=" %%a in ('wmic OS get caption ^|find /i "windows"') do (set #OS=%%a)

set #

答案 1 :(得分:2)

了解这对您有何帮助:

@echo off
setlocal EnableDelayedExpansion
:: Routine by Aacini
::Identify OS
for /F "delims=" %%a in ('ver') do set ver=%%a
set Version=
for %%a in (95=95 98=98 ME=ME NT=NT 2000=2000 5.1.=XP 5.2.=2003 6.0.=Vista 6.1.=7 6.2.=8 6.3=8.1) do (
   if "!Version!" equ "this" (
      set Version=Windows %%a
   ) else if "!ver: %%a=!" neq "%ver%" (
      set Version=this
   )
)

::Identify bit
if exist "%SYSTEMDRIVE%\Program Files (x86)" (
   set Type=64 bit
) else (
   set Type=32 bit
)

::Display result
echo %Version% %Type%
echo/
pause

答案 2 :(得分:1)

这个

http://www.robvanderwoude.com/sourcecode.php?src=winver2_nt

和这个

http://www.robvanderwoude.com/sourcecode.php?src=winver_bat

应该做的工作。不确定是否更新以支持Windows 8。 Here are all build numbers.

编辑(仅检查它是Windows XP还是7 - 请参阅下面的评论。也适用于没有WMIC命令的Windows家庭版)

@echo off
for /f " tokens=4,5 delims=. " %%a in ('ver') do set /a wver=%%a%%b
if "%wver%" == "61" echo Windows7
if "%wver%" == "51" echo WindowsXP

答案 3 :(得分:0)

在bash中:

UN=`uname`

echo $UN

在Windows中,您只需检查OS环境变量:

echo %OS%

答案 4 :(得分:0)

也许这就是你要找的东西:

wmic os get caption /value

还有更多信息。尝试

wmic os get /value

答案 5 :(得分:0)

这是我写的一个例行程序。 WMIC为某些操作系统返回愚蠢的名称,版本号不够健壮,因为服务器和工作站的某些版本相同。这适用于一切。

@echo off
setlocal

call :GetOS cap bit sp
echo %cap%%bit% (%sp%)
exit /b


:GetOS caption servicepack 
setlocal
set arc=%PROCESSOR_ARCHITECTURE%
set key="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
for /f "tokens=3*" %%a in (
  'reg query %key%^|findstr /i ProductName') do set cap=%%a %%b
for /f "tokens=3*" %%a in (
  'reg query %key%^|findstr /i CSDVersion') do set sp=%%a %%b
endlocal & set %1=%cap% & set %2=%arc% & set %3=%sp%
exit /b