Я думаю, что это на самом деле оболочка DOS делает это:
Насколько я понимаю, DOS решил использовать косую черту (/) для параметров командной строки (т. Е. "DIR / s"), даже до того, как DOS поддерживал подкаталоги . Позже, когда они представили подкаталоги, они поняли, что не могут использовать прямую косую черту в качестве разделителя пути (как это было в стандарте в UNIX), поэтому вместо них пришлось использовать обратную косую черту.
Также фактором является то, что DOS не требует пробела между именем команды и первым параметром. (То есть, "CD \" - это то же самое, что и "CD \".)
Исходя из вышесказанного, я предполагаю, что не программа неправильно анализирует командную строку - вместо этого оболочка DOS , использующая "C:" в качестве имя исполняемого файла / команды, а остальное в качестве аргумента (ов) командной строки. (Конечно, довольно тестовое приложение могло бы это проверить, но сейчас я не в курсе своего компилятора.)