微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

报告计算机描述或不使用 WMIC

如何解决报告计算机描述或不使用 WMIC

我正在制作一个脚本来检测 PC 列表中是否存在某些程序,然后报告主机名、软件列表和描述以便于定位。 一切都很好,但是当找到“无”描述时,我无法整理输出。和以前一样,我会在一个整洁的列表中获取所需的信息,当没有描述时,它只会报告 ECHO 已打开。 “或”ECHO 关闭

这是我的代码

title Problem Software Itinary
echo.
echo List of PC Names goes here Plugins\hostnames.txt
echo.
echo Press a key to start...
pause>nul
CLS
echo.
break>Plugins\Logs\Results.txt
for /f "usebackq tokens=*" %%A in (Plugins\hostnames.txt) do (
echo ============================================= & echo =============================================>>Plugins\Logs\Results.txt
echo Scanning PC %%A... 2>&1 | Plugins\tee -a Plugins\Logs\Results.txt
if exist "\\%%A\C$\FOO" echo FOO PROG Installed 2>&1 | Plugins\tee -a Plugins\Logs\Results.txt
if exist "\\%%A\C$\FOO2" echo FOO 2 PROG Installed 2>&1 | Plugins\tee -a Plugins\Logs\Results.txt
for /f "tokens=2 Delims==" %%B in ('WMIC /NODE:"%%A" os get description /VALUE ^| find "Description"') Do Echo %%B 2>&1 | Plugins\tee -a Plugins\Logs\Results.txt
echo ============================================= & echo =============================================>>Plugins\Logs\Results.txt
)
start "" Plugins\Logs\Results.txt
echo.
echo Done! Press any key to return to Menu...
pause>nul
goto :audit

这是它的工作示例和回声问题:-

=============================================
=============================================
Scanning PC TESTPC1...  
FOO PROG Installed  
GP-B82047-ROOM 4  
=============================================
=============================================
Scanning PC TESTPC2...  
FOO 2 PROG Installed  
ECHO is on.
=============================================
=============================================

我希望有类似“找不到描述”之类的回声

为了解决它,我尝试将 desc 变量设置为 %%B(设置 desc=%%b)(在 wmic 行中)(而不是 Do Echo %%B),然后如果定义了 desc(echo desc)ELSE (回声没有可用的描述)。然而,这也不起作用,同样的问题。我也尝试启用延迟扩展,但没有成功。

我错过了什么 - 谢谢!!!?

解决方法

您的脚本中实际上已经有了部分解决方案,或者至少有一个可能的解决方案:

for /f "tokens=2 Delims==" %%B in ('WMIC /NODE:"%%A" os get description /VALUE ^| find "Description"') Do Echo %%B 2>&1 | Plugins\tee -a Plugins\Logs\Results.txt

如果这个回声可以是空的,就改成

for /f "tokens=2 Delims==" %%B in ('WMIC /NODE:"%%A" os get description /VALUE ^| find "Description"') Do Echo.%%B 2>&1 | Plugins\tee -a Plugins\Logs\Results.txt

注意 . 后面的 echo。这将抑制来自 echo 的错误消息。

另外,请注意,通常最好使用除 . 以外的其他字符,因为如果您不幸在路径中包含名为 echo 的程序的机器上运行,结果可能是不可预测的。 : 对此很有效,因此:

for /f "tokens=2 Delims==" %%B in ('WMIC /NODE:"%%A" os get description /VALUE ^| find "Description"') Do Echo:%%B 2>&1 | Plugins\tee -a Plugins\Logs\Results.txt

将实现相同的目标。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。