33

How would I go about viewing a list of COM ports in use without the use of Device Manager?

I don't want to install any software either. Is there a possible way to do this through the command line?

  • Please better define "In Use". installed as a device? Has a device attached to it? Is actively transferring data? – Ƭᴇcʜιᴇ007 Nov 4 '14 at 16:33
  • @Ƭᴇcʜιᴇ007 sorry, in use would be having a device attached to it. I have a ttl uart cable plugged into a USB. – Marmstrong Nov 4 '14 at 16:36
  • I suppose you can do this through a powershell script. Why can't you use device manager? Your unwillingness to use something like Putty is odd. – Ramhound Nov 4 '14 at 16:48
  • 1
    @Ramhound Using a University PC which has the device manager locked down to stop people like me fiddling. I can see that the device is COM3 on my laptop. I want to use Putty but I don't know which COM port to use. – Marmstrong Nov 4 '14 at 16:50
  • 2
    @Marmstrong In the command prompt use mode. Used without parameters, mode displays all the controllable attributes of the CON (console) and the available COM devices (and LPT as well) – JosefZ Nov 5 '14 at 0:51
51

In the command prompt use

mode

Used without parameters, mode displays all the controllable attributes of the CON (console) and the available COM devices (and LPT as well).

Accepts /? switch for basic help:

mode /?

  • Using mode most of the time I don't see the devices that are not connected, as mentioned in @G-M 's answer. – sylvainulg Mar 6 at 14:14
10

In the command prompt use:

C:\>wmic path Win32_SerialPort

OR

In PowerShell:

PS> Get-WMIObject Win32_SerialPort

OR

PS> Get-WMIObject Win32_SerialPort | Select-Object Name,DeviceID,Description

Hope this helps.

  • 1
    The command prompt returned No Instance(s) Available. – Marmstrong Nov 4 '14 at 16:46
  • If there are no Com port devices detect then the command results "No Instance(s) Available". Check your "Device Manager" and ensure your machine detected the Com ports in "Device Manager" – vembutech Nov 4 '14 at 16:53
  • OP said "Using a University PC which has the device manager locked down" – DavidPostill Nov 4 '14 at 16:54
  • @vembutech - Looks like you will need to get IT involved in that case. – Ramhound Nov 4 '14 at 16:56
  • @vembutech I have checked the device on my own laptop and it appears as COM3 in device manager but the command prompt still shows the same result. – Marmstrong Nov 4 '14 at 16:56
8

I know the question has been answered, but this is another method.

In command prompt, use:
chgport
in windows Vista and up. Lists your ports and which device they are.

  • 1
    Windows 7 "'chgport' is not recognized as an internal or external command, operable program or batch file." – DavidPostill Nov 25 '16 at 13:58
  • 3
    works for me on Win 7 – woky Feb 24 '17 at 8:07
  • chgport /QUERY works for me in Win7 pro. It lists the \Device\name for the currently select com port, not a full list. More interesting, chgport /? shows: (formatting fails) CHANGE PORT [portx=porty | /D portx | /QUERY] portx=porty Map port x to port y. /D portx Delete mapping for port x. /QUERY Display current mapping ports. And chgport COM4=COM5 allows type COM4: to work! – James Newton Aug 31 '17 at 19:11
  • chgport also works in Windows 10 – spikey_richie Mar 7 at 13:22
3

Using mode most of the time I don't see the devices that are not connected.

I prefer to use this solution with Python:

python -c "import serial.tools.list_ports as ls;print list(ls.comports())"

So I can see anything plugged in even if the connection is closed.

serial.tools.list_ports is from package pyserial.

2

wmic https://docs.microsoft.com/en-us/windows/desktop/wmisdk/wmic is a windows command line utility to get system information.

If your serial port is virtual created by some driver through USB connection, use this example to get details about these serial ports.

wmic path CIM_LogicalDevice where "Description like 'USB Serial%'" get /value
  • a bit of further information would be helpfull – Albin Nov 16 '18 at 17:55
  • that produces lots of information. get Name instead of get /value might help. Unfortunately, it won't simply list ports, but strings such as "USB Serial Port (COM17)". There are also multiple entries mentioning simply "USB Serial Converter" on my setup. – sylvainulg Mar 6 at 14:22
0

The snippet below lists serial ports into the $PORTS variable

BASH MSYS2

This function will get a list of ports automatically

PORTS=/c/Windows/System32/mode.com | grep Status.*COM | awk '{ print $4 }' | sed s/://

To the list (use) the ports, see the code below:

echo -n "Programming (echoing) ports: " for aa in $PORTS; do echo -n $aa done echo ""

0

You can also run the following from cmd.exe prompt

reg query HKLM\HARDWARE\DEVICEMAP\SERIALCOMM

And here is an open source utility to do the same and more: https://todbot.com/blog/2012/03/02/listcomports-windows-command-line-tool-for-usb-to-serial/

protected by Community Feb 2 at 20:37

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.