Here is the problem. In PCB, pins have a name and a number. The number
is specific to the package and the name is specific to whats inside the
package. Lets take a SO8 package that happens to house an op-amp.
In the schematic you have pin numbers and pin labels. You might have
pin 2 labeled as "IN-" and pin 3 labeled as "IN+" and pin 7 labeled as
"OUT". When you netlist, you refer to pin numbers. So for example,
U1-2 and U1-3 and not U1-IN- and U1-IN+. The pin numbers define all of
your connectivity information. The pin labels are simply informative.
Now you load PCB. The rat lines key off of the pin number and uses the
pin number in the netlist. Pin names are not used at all.
So if pin numbers are broken in your symbol or footprint, thats it, game
over, things are just broken.
Now that the .cmd file does is it goes through and says "U1-2 (i.e. pin
#2 of U1) happens to be called the "IN-" pin on this particular op-amp".
And it makes all those changes. Now if you query that pin in pcb, it
will tell you pin #2 and "IN-". This is useful when you're working with
a big part and you don't know the pinout by heart or via the context and
you want to quickly see the name of the pin you're connecting too.
Thats all the .cmd file does. If you don't ever load it, nothing bad
happens other than querying U1 pin #2 will just report "this is pin #2.
It is called '2'" instead of ..... It is called "IN-".