我看过不少地方。也许我没有提出正确的问题,但我现在在这里。我正在制作一个批处理文件来感知操作系统是什么。如何使一个批量变量=一个命令的答案?
我当前的尝试:
set os=systeminfo |find "OS Name"
编辑:Windows批处理文件
编辑:如果一个命令返回控制台线。我如何制作一个变量=返回的字符串。 (这是我的主要问题,很抱歉,如果我不是很清楚。)
例子:
的varName =命令|找到 “字符串”
我看过不少地方。也许我没有提出正确的问题,但我现在在这里。我正在制作一个批处理文件来感知操作系统是什么。如何使一个批量变量=一个命令的答案?
我当前的尝试:
set os=systeminfo |find "OS Name"
编辑:Windows批处理文件
编辑:如果一个命令返回控制台线。我如何制作一个变量=返回的字符串。 (这是我的主要问题,很抱歉,如果我不是很清楚。)
例子:
的varName =命令|找到 “字符串”
在bash:
UN=`uname`
echo $UN
在windows您可以检查OS
环境变量:
echo %OS%
我尝试在'echo%OS%'中输入内容并打印出Windows_NT,我正在寻找它来说一些类似于“Microsoft Windows 8”的内容。1“ – bitfinder1
此
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
问题是我只是检查是否它是Windows XP或7,因为它不会在任何其他系统上。 – bitfinder1
顺便说一下,更直接的回答将优先于链接.. – bitfinder1
好的,编辑答案 – npocmaka
也许这是你在找什么:
wmic os get caption /value
有ISA更多的信息。尝试
wmic os get /value
可以在测试平台上运行,但是xp平台似乎有一个奇怪的读取错误, – bitfinder1
刚刚在旧版本的XP机器上测试过:工作正常,错误是怎么回事? – Stephan
windows家庭版本没有'WMIC' – npocmaka
@echo off
for /f "delims=" %%a in ('wmic OS get caption ^|find /i "windows"') do (set #OS=%%a)
set #
这是一个例行我写这样做。 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
看到这是如何为你工作:
@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
在Windows 8平台上目前只测试。程序将主要用于使用XP和7的其他计算机上。 – bitfinder1
如果要求测试当前的操作系统版本,则可以使用我编写的一个名为[OSTest.exe]的小程序(http://www.westmesatech的.com/wast.html)。它允许您根据许多标准测试当前操作系统。 –