在批处理文件中获取Windows版本

11 浏览
0 Comments

在批处理文件中获取Windows版本

我需要用批处理文件获取操作系统版本。我在网上看到了很多示例,其中很多使用了如下代码:\n

@echo off
ver | find "XP" > nul
if %ERRORLEVEL% == 0 goto ver_xp
if not exist %SystemRoot%\system32\systeminfo.exe goto warnthenexit
systeminfo | find "OS Name" > %TEMP%\osname.txt
FOR /F "usebackq delims=: tokens=2" %%i IN (%TEMP%\osname.txt) DO set vers=%%i
echo %vers% | find "Windows 7" > nul
if %ERRORLEVEL% == 0 goto ver_7
echo %vers% | find "Windows Vista" > nul
if %ERRORLEVEL% == 0 goto ver_vista
goto warnthenexit
:ver_7
:Run Windows 7 specific commands here.
echo Windows 7
goto exit
:ver_vista
:Run Windows Vista specific commands here.
echo Windows Vista
goto exit
:ver_xp
:Run Windows XP specific commands here.
echo Windows XP
goto exit
:warnthenexit
echo Machine undetermined.
:exit

\n问题是,当我在Vista或Windows 7上执行时,我得到了以下消息:\n

\n机器无法确定\n

\n有没有其他方法可以实现我想要的功能?

0
0 Comments

问题出现的原因是需要在批处理文件中获取Windows版本号,但不清楚如何实现。以下是解决方法:

使用wmic命令尝试获取Windows版本号。

尝试运行wmic os get version命令。

这将在命令行中给出版本号,然后只需将其集成到批处理文件中。

这不比说“尝试运行Ver”更有帮助。

WMIC仅需要管理员权限运行一次。

然而,出现了一个问题,使用该命令时会打开wmic cli,并未显示任何错误信息。我正在使用的是Windows 8.1。

0
0 Comments

问题的出现原因:该问题的出现是因为需要在批处理文件中获取Windows版本号。

解决方法:以下是获取Windows版本号的一些批处理命令。

1. 从cmd控制台中提取版本号x.y:

for /f "tokens=4-7 delims=[.] " %i in ('ver') do @(if %i==Version (echo %j.%k) else (echo %i.%j))

2. 提取完整版本号x.y.z:

for /f "tokens=4-7 delims=[.] " %i in ('ver') do @(if %i==Version (echo %j.%k.%l) else (echo %i.%j.%k))

3. 在批处理脚本中使用%%代替单个%:

@echo off
for /f "tokens=4-7 delims=[.] " %%i in ('ver') do (if %%i==Version (set v=%%j.%%k) else (set v=%%i.%%j))
echo %v%

需要注意的是,提取的版本号并不总是与Windows名称对应。以上是从维基百科中列出的一些Microsoft Windows版本的示例。

请注意,这个问题的解决方法受到了Agent Gibbs和peterbh的启发。

0
0 Comments

问题的出现原因是需要在批处理文件中获取Windows版本号,并根据版本号进行相应的操作。解决方法是通过解析ver命令的输出来获取版本号,并使用if语句进行判断和操作。

以下是解决方法的具体步骤:

1. 使用ver命令获取Windows版本号的输出。

2. 使用setlocal命令开启局部环境变量。

3. 使用for循环和tokensdelims参数解析版本号字符串,将第4个和第5个字段分别赋值给VERSION变量。

4. 使用if语句根据版本号判断Windows的版本,并进行相应的操作。

5. 使用endlocal命令结束局部环境变量。

需要注意的是,该方法无法区分Windows的服务器版本和消费者版本。要正确处理Windows XP,需要修改delims参数,将其设置为"delims=[.XP "。这是因为Windows XP的版本号输出中包含了"XP"字符串。同时需要注意在"XP"之后有一个空格,空格是必需的。

在这个解决方法中,还有一些疑问需要解决。例如,将delims修改为"delims=[.XP "是否会影响Win7/8的检测?是否仍然需要包含tokens=4-5?正确的代码行是什么?

可以参考MSDN上的表格来确定版本号与Windows产品版本的对应关系。这个表格解释了为什么6.1代表Windows 7。

通过以上步骤,可以在批处理文件中获取Windows版本号,并根据版本号进行相应的操作。

0