It's may be, that SQL Server fully local and it have not remote access. By example, SQL Server Express is local. So, sqlcmd -L cannot find the local server because this server is not responding to the broadband access request.
I use this command
sc queryex | grep "MSSQL" It return, for example
Service_Name: MSSQL$SQLEXPRESS2 Service_Name: MSSQL$SQLEXPRESS It get list of all system services and find services with name constraints "MSSQL". It return list of system services for every MS SQL instances. But it return only local instances, on current machine, for remote server, on remote machine, use sqlcmd -L.