获取 REG QUERY 的结果

获取 REG QUERY 的结果

我运行以下脚本来获取 Symantec Endpoint Protection 版本,但我只想获得版本号。应该纠正什么?

@echo off
setlocal enabledelayedexpansion
    
For /F "tokens=3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\Symantec Endpoint Protection\currentversion\public-opstate" /v "DeployRunningVersion"') do echo %%A
PAUSE

在此处输入图片描述

答案1

我会将 powershell 用作批处理文件中的一行程序。我总是这样做,因为从 cmd.exe 中获取东西很麻烦。

就像(我的一个.bat文件中)一样:
for /f %%a in ('powershell -Command "Get-Date -format yyyy_MM_dd__HH-mm-ss"') do ECHO %%a

尝试一下这个(因为它肯定有效):

@echo off
SetLocal

for /f "delims=" %%a in ('powershell -Command "Get-ItemPropertyValue -Path 'HKCU:Control Panel\Colors\' -Name ActiveBorder"') do Set ActiveBorder=%%a
echo ActiveBordervalues are %ActiveBordervalues%

EndLocal

我不使用 Symantec Endpoint Protection,所以我实际上无法查询您的密钥,但如果我使用了,我会尝试类似的方法...

@echo off
SetLocal

for /f "delims=" %%a in ('powershell -Command "Get-ItemPropertyValue -Path 'HKLM:SOFTWARE\Symantec\Symantec Endpoint Protection\currentversion\public-opstate' -Name DeployRunningVersion"') do Set DeployRunningVersion=%%a
echo DeployRunningVersion is %DeployRunningVersion%

EndLocal

如果您需要单独的 1.2.3.4,请设置“tokens=4 delims=。”并读取 %%a、%%b、%%c 和 %%d

是的,就在你的批处理文件中。:)

如果您尝试使用使用批量无分隔符(如 | 或内部引号)的特殊查询,则需要通过转义它们来扰乱查询。在 for 循环中(需要“命令”)找出答案可能是一件非常麻烦的事情。

祝你好运!希望它能奏效。

相关内容