【问题标题】:Batch Scripting - Finding OS Version information - Variable Output批处理脚本 - 查找操作系统版本信息 - 变量输出
【发布时间】:2013-09-02 00:47:09
【问题描述】:

我有一个完美运行的脚本。

 if not exist %SystemRoot%\system32\systeminfo.exe goto warnthenexit

 systeminfo | find "OS Name" > osname.txt

 FOR /F "usebackq delims=: tokens=2" %%i IN (osname.txt) DO set vers=%%i

 echo %vers% | find "Windows 7" > nul

 if %ERRORLEVEL% == 0 goto VERSION_7

但是,当我尝试像这样打印结果时:

Echo Current OS:%vers% - 64 Bit

它以真的打印结果!长差距。像这样:

Current OS:                   Microsoft Windows 7 Enterprise  - 64 Bit

有人知道为什么吗?或者我怎样才能消除大的差距?

谢谢一百万!

【问题讨论】:

标签: windows variables batch-file version


【解决方案1】:

我知道您的脚本“运行良好”,但效率不高。

SYSTEMINFO 需要很长时间,osname.txt 可以避免。

检查:

FOR /F "TOKENS=1,* DELIMS==" %%u IN ('WMIC OS GET CAPTION /VALUE') DO IF /I "%%u"=="Caption" SET vers=%%v

【讨论】:

  • 更重要的是,systeminfo 输出已本地化,包括“操作系统名称”标签本身被翻译替换(因此findstr "OS Name" 在非英语 Windows 中不起作用)。另一方面,wmic 的输出没有本地化,因此可以findstr 一直按照他们想要的方式:-)
【解决方案2】:

改变

FOR /F "usebackq delims=: tokens=2" %%i IN (osname.txt) DO set vers=%%i

到

FOR /F "usebackq delims=  tokens=2" %%i IN (osname.txt) DO set vers=%%i

*在 delims 之后将 : 更改为 %space%...

【讨论】:

    猜你喜欢
    • 2019-09-02
    • 2013-09-25
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    相关资源
    最近更新 更多