![使用 wmic 在批处理文件中获取工作组](https://linux22.com/image/1527145/%E4%BD%BF%E7%94%A8%20wmic%20%E5%9C%A8%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%B7%A5%E4%BD%9C%E7%BB%84.png)
我不太熟悉批处理文件,但我正在尝试使用 来获取工作组wmic
。我一直在尝试使用不同的选项for
。到目前为止,这是我得到的最佳结果。
for /f "skip=1" %%a in ('wmic computersystem get workgroup') do echo %%a
这将返回我想要的内容,但它也会回应其他内容,因为它会给出一条echo is off
消息。我还想将工作组设置为一个变量,例如这样的变量。
for /f "skip=1" %%a in ('wmic computersystem get workgroup') do set "myVar=%%a"
但这不会返回任何内容。我假设我需要使用tokens
and/or delims
,但我只是不知道如何让它正常工作。
如果有人能帮助我,我将不胜感激,也许这可以帮助我更多地了解如何使用循环for
。我知道这可能很简单,所以请原谅我如此无知。
答案1
它也呼应了其他的东西,因为它给出了一个echo is off
这是因为wmic
(写得不好)在输出末尾输出了一个空行。
您可以使用findstr /r /v "^$"
删除空白行。
使用批处理文件:
@echo off
setlocal
for /f "usebackq skip=1 tokens=*" %%i in (`wmic computersystem get workgroup ^| findstr /r /v "^$"`) do set myVar=%%i
echo %myVar%
endendlocal
使用命令行:
for /f "usebackq skip=1 tokens=*" %i in (`wmic computersystem get workgroup ^| findstr /r /v "^$" ^| findstr /r /v "^$"`) do @set myVar=%i && echo %myVar%
笔记:
for /f
循环输出wmic
。skip=1
跳过标题行(包含VariableValue
)findstr /r /v "^$"
从输出中删除尾随的空白行wmic
。
示例输出:
> wmic computersystem get workgroup
Workgroup
WORKGROUP
> for /f "usebackq skip=1 tokens=*" %i in (`wmic computersystem get workgroup ^| findstr /r /v "^$" ^| findstr /r /v "^$"`) do @set myVar=%i && echo %myVar%
WORKGROUP
>
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 查找字符串- 在文件中搜索字符串。
- 对于/f- 循环命令以执行另一个命令的结果。
- 西米克- Windows 管理规范命令。