需要在Windows批处理脚本中找到存储命令输出的变量[重复]。

问题描述 投票:0回答:1

我需要运行这个命令 wmic csproduct get name 并将第二行转移到一个变量中,这样我就可以将其追加到另一个变量中。我找到的大多数结果都建议使用下面的代码,但它似乎依赖于一个外部文本文件或批处理脚本来运行。有没有一种方法可以在我的批处理脚本中运行这个命令而不需要另一个文件?

for /f %%i in ('command') do set RESULT=%%i
echo %RESULT%
windows batch-file variables command-line
1个回答
0
投票

for循环不处理文件或外部批处理,它处理的是Command

一个例子是Choice命令.你可以使用这个方法来返回命令的实际按键。

For /F "Delims=" %%K in ('CHOICE /N /C:YN') Do Set "Key=%%K"

这将返回一个值为 YN 在变量中 Key

命令输出的典型转换方法有:。

For /F "Delims=" %%O in ('command') Do Set "Result=%%O"

或者

For /F "UsebackQ Tokens=* Delims=" %%O in (`"command"`) Do Set "Result=%%O"

与使用的方法不同,取决于你是否需要从输出中分离出一个特定的标记需要处理一个带引号的命令。

在您的特殊情况下,您可以直接将值设置到值变量中,并使用 /format:value 开关

For /F "Delims=" %%a in ('"wmic csproduct get name /format:value"') Do (Set %%a>Nul)
Echo(%name%

>nul 组件是必须的,因为如果不这样做,就会导致通过执行 Set

© www.soinside.com 2019 - 2024. All rights reserved.