BATCH:for循环设置的变量最终为空
BATCH: Variable set by for loop ends up being blank
我正在尝试运行以下脚本
@ECHO OFF
FOR /F "Skip=1 Tokens=*" %%G IN ('WMIC COMPUTERSYSTEM GET Manufacturer') DO (SET "DeviceOEM=%%G")
ECHO OEM: %DeviceOEM%
PAUSE
然而我得到的只是“ECHO OEM:”,这表明 %DeviceOEM% 是空白的。
现在如果我运行
FOR /F "Skip=1 Tokens=*" %%G IN ('WMIC COMPUTERSYSTEM GET Manufacturer') DO (ECHO %%G)
PAUSE
然后我得到了我的 OEM 的真实答案。
我不明白这个 SET 命令哪里出错了。
当 delim
在 =
上发出时,它只会将 =
之后的值赋给该值。因此,我们更改 wmic
命令以使用 /value
发出结果,这将 return Manufacturer=<name of OEM>
我们只使用所有内容 post =
@echo off
For /F "tokens=2*delims==" %%G in ('WMIC COMPUTERSYSTEM GET Manufacturer /value') do SET "DeviceOEM=%%G"
echo OEM: %DeviceOEM%
我正在尝试运行以下脚本
@ECHO OFF
FOR /F "Skip=1 Tokens=*" %%G IN ('WMIC COMPUTERSYSTEM GET Manufacturer') DO (SET "DeviceOEM=%%G")
ECHO OEM: %DeviceOEM%
PAUSE
然而我得到的只是“ECHO OEM:”,这表明 %DeviceOEM% 是空白的。
现在如果我运行
FOR /F "Skip=1 Tokens=*" %%G IN ('WMIC COMPUTERSYSTEM GET Manufacturer') DO (ECHO %%G)
PAUSE
然后我得到了我的 OEM 的真实答案。
我不明白这个 SET 命令哪里出错了。
当 delim
在 =
上发出时,它只会将 =
之后的值赋给该值。因此,我们更改 wmic
命令以使用 /value
发出结果,这将 return Manufacturer=<name of OEM>
我们只使用所有内容 post =
@echo off
For /F "tokens=2*delims==" %%G in ('WMIC COMPUTERSYSTEM GET Manufacturer /value') do SET "DeviceOEM=%%G"
echo OEM: %DeviceOEM%