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

时间:2017-11-09 09:57:32

标签: batch-file batch-processing

我获得的打印机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

2 个答案:

答案 0 :(得分:1)

您的问题有两个提及,第一个是您提供的输出与您的代码输出的输出不匹配。第二个是WMIC输出带有非标准换行/回车序列,最有效的方法是通过另一个循环传递结果。

要么像这样:

@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%

答案 1 :(得分:0)

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

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