2013-12-09 132 views
2

我看过不少地方。也许我没有提出正确的问题,但我现在在这里。我正在制作一个批处理文件来感知操作系统是什么。如何使一个批量变量=一个命令的答案?

我当前的尝试:

set os=systeminfo |find "OS Name" 

编辑:Windows批处理文件

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

例子:

的varName =命令|找到 “字符串”

+0

在Windows 8平台上目前只测试。程序将主要用于使用XP和7的其他计算机上。 – bitfinder1

+0

如果要求测试当前的操作系统版本,则可以使用我编写的一个名为[OSTest.exe]的小程序(http://www.westmesatech的.com/wast.html)。它允许您根据许多标准测试当前操作系统。 –

回答

0

在bash:

UN=`uname` 

echo $UN 

在windows您可以检查OS环境变量:

echo %OS% 
+0

我尝试在'echo%OS%'中输入内容并打印出Windows_NT,我正在寻找它来说一些类似于“Microsoft Windows 8”的内容。1“ – bitfinder1

1

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

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

应该做的work.Not确定是否更新到支持Windows 8 Here are all build numbers.

编辑(只检查是否是Windows XP或7 - 请参阅下面的评论。也可以在没有的Windows家庭版上使用210指令)

@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 
+0

问题是我只是检查是否它是Windows XP或7,因为它不会在任何其他系统上。 – bitfinder1

+0

顺便说一下,更直接的回答将优先于链接.. – bitfinder1

+0

好的,编辑答案 – npocmaka

0

也许这是你在找什么:

wmic os get caption /value 

有ISA更多的信息。尝试

wmic os get /value 
+0

可以在测试平台上运行,但是xp平台似乎有一个奇怪的读取错误, – bitfinder1

+0

刚刚在旧版本的XP机器上测试过:工作正常,错误是怎么回事? – Stephan

+0

windows家庭版本没有'WMIC' – npocmaka

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

set # 
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 
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 
相关问题