Existem vários caracteres que têm um significado especial para o Windows (e para o DOS, de onde a maioria dos caracteres veio originalmente)
de MSDN :
A filename cannot contain any of the following characters:
\ / : * ? " < > |
/
é um comutador (e também um separador de diretórios).
\
é um separador de diretórios.
:
é um designador de unidade.
*
e ?
são caracteres curinga usados na pesquisa.
"
é uma maneira de permitir espaços nos parâmetros.
<
e >
são redirecionamentos que permitem a entrada e a saída de um programa, e ir para algo diferente que screen / keyboard.
|
é um pipe que permite que a saída de um programa seja usada como entrada para o próximo.