我看过很多地方。也许我没有问过正确的问题,但我现在在这里。我正在制作一个批处理文件来感知操作系统是什么。
我目前的尝试:
set os=systeminfo |find "OS Name"
编辑:WINDOWS批处理文件
编辑:如果命令在控制台中返回一行。如何创建变量=返回的字符串。 (这是我的主要问题。如果我不是很清楚,请抱歉。)
示例:
varName = Command | find“String”
答案 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