我需要将 WMIC COMPUTERSYSTEM GET MODEL/Value 的值设置为变量。当我运行此命令时,我得到以下结果。为什么我会收到额外的空行?
U:\>for /f "delims=" %i in ('WMIC COMPUTERSYSTEM GET MODEL /Value') do set output=%i
:\>set output=
:\>set output=
:\>set output=Model=HP ProDesk 600 G1 SFF
:\>set output=
:\>set output=
:\>set output=
最佳答案
这是 WMIC 输出的问题,其中包含回车
字符。
因此,空行不会被删除,因为它们并不是完全空的。
回车符也会导致 :>
而不是 U:>
的奇怪输出,因为回车符首先将光标移动到 POS1
然后一个空格删除 U
。
使用额外的 FOR/F 可以去掉回车符
for /f "delims=" %i in ('WMIC COMPUTERSYSTEM GET MODEL /Value') do @(
for /F "delims=" %X in ("%i") do set output=%X
)
顺便说一句。通常您希望在批处理文件中使用这样的表达式,而不是在命令行中。
然后你必须将其转换为
@echo off
for /f "delims=" %%i in ('WMIC COMPUTERSYSTEM GET MODEL /Value') do (
for /F "delims=" %%X in ("%%i") do set output=%%X
)
关于batch-file - 将变量设置为命令的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38742917/