Alguns sistemas operacionais proíbem que determinados caracteres apareçam nos nomes dos arquivos: (Recurso da Wikipedia )
/ slash usado como um separador de componentes de nome de caminho em sistemas Unix, Windows e Amiga. (O shell command.com do MS-DOS o consumiria como um caractere de opção, mas o próprio Windows sempre o aceita como um separador [2] [vago])
\ barra invertida Também usado como um separador de componentes de nome de caminho no MS-DOS, OS / 2 e Windows (não há diferença entre barra e barra invertida); permitido no nome do arquivo Unix
? ponto de interrogação usado como curinga no Unix, Windows e AmigaOS; marca um único caractere. Permitido em nomes de arquivos Unix
* asterisco usado como curinga no Unix, MS-DOS, RT-11, VMS e Windows. Marca qualquer sequência de caracteres (Unix, Windows, versões posteriores do MS-DOS) ou qualquer sequência de caracteres no nome da base ou na extensão (portanto " . " Nas versões anteriores do MS-DOS significa "todos os arquivos". Permitido nos nomes de arquivos do Unix ,
: dois pontos usados para determinar o ponto de montagem / unidade no Windows; usado para determinar o dispositivo virtual ou físico, como uma unidade no AmigaOS, RT-11 e VMS; usado como um separador de nome de caminho no Mac OS clássico. Dobrado após um nome no VMS, indica o nome do nó DECnet (equivalente a um nome de host NetBIOS (rede Windows) precedido por "\".)
| barra vertical designa pipelining de software no Unix e Windows; permitido em nomes de arquivos Unix
"aspas usadas para marcar o início e o fim dos nomes de arquivos que contêm espaços no Windows
<menos que o usado para redirecionar a entrada, permitido nos nomes de arquivos Unix
> maior que o usado para redirecionar a saída, permitido nos nomes de arquivos Unix
. período permitido, mas a última ocorrência será interpretada como o separador de extensões no VMS, MS-DOS e Windows. Em outros sistemas operacionais, geralmente considerados como parte do nome do arquivo, e mais de um ponto final pode ser permitido.