Microsoft Windows: ядро Windows запрещает использование символов в диапазоне 1-31 (т. Е. 0x01-0x1F) и символов "*: <>? \ |. Хотя NTFS позволяет каждому компоненту пути (каталогу или имени файла) быть 255 длиной символов и длиной до 32767 символов, ядро Windows поддерживает только пути длиной до 259. Кроме того, Windows запрещает использование имен устройств MS-DOS AUX, CLOCK $, COM1, COM2, COM3, COM4, COM5 , COM6, COM7, COM8, COM9, CON, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9, NUL и PRN, а также эти имена с любым расширением (например, AUX.txt), кроме случаев использования длинных путей UNC (например, \. \ C: \ nul.txt или \? \ D: \ aux \ con). (На самом деле, CLOCK $ может использоваться, если предоставляется расширение.) Эти ограничения применяются только в Windows - Linux, например, позволяет использовать "*: <>? \ | даже в NTFS.
Источник: http://en.wikipedia.org/wiki/Filename