如何在批处理脚本中的变量中分配设备 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%
我正在获取打印机的 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%