如何在批处理脚本中的变量中分配设备 ID(COMn 或 LTPn)

how to assign device id (COMn or LTPn) in a variable in batch script

我正在获取打印机的 device ID 并将其分配给变量 printerPort

for /f "tokens=* skip=1" %%a in ('wmic path Win32_SerialPort get DeviceID') do set printerPort=%%a

echo %printerPort%

输出:

set printerPort=COM1
set printerPort=
echo

如何获取变量 printerPort 中的设备 ID COM1?

输出只是批处理文件中正在回显的命令。您可以看到循环运行了两次。第一行后需要出来:

for /f "tokens=* skip=1" %%a in ('wmic path Win32_SerialPort get DeviceID') do (
    set printerPort=%%a
    goto exit1
)
:exit1
echo %printerPort%

您的问题有两处提及,第一个是您给出的输出与您的代码将输出的不匹配。第二个是 WMIC 输出带有非标准行 feed/carriage return 序列,解决这个问题的最有效方法是通过另一个循环传递结果。

要么像这样:

@Echo Off
For /F "Skip=1Delims=" %%A In ('WMIC Path Win32_SerialPort Get DeviceID'
) Do For /F "Tokens=*" %%B In ("%%A") Do Set "printerPort=%%B"

Echo %printerPort%

或者有时,(在本例中),像这样:

@Echo Off
For /F "Skip=1Delims=" %%A In ('WMIC Path Win32_SerialPort Get DeviceID'
) Do For %%B In (%%A) Do Set "printerPort=%%B"

Echo %printerPort%