Вообще есть ряд запрещённых символов, которые не должны быть в имени файла в Windows - это:
\ - разделитель подкаталогов
/ - разделитель ключей командного интерпретатора
: - отделяет букву диска или имя альтернативного потока данных
* - заменяющий символ (маска "любое количество любых символов")
? - заменяющий символ (маска "один любой символ")
" - используется для указания путей, содержащих пробелы
< - перенаправление ввода<br>> - перенаправление вывода
| - обозначает конвейер
В некоторых UNIX и UNIX-подобных ОС запрещен slash (/) - разделитель подкаталогов - и символ конца строки (\0). Перечисленные выше символы (кроме slash) использовать можно, но из соображений совместимости их лучше избегать.