na máscara do DOS (e na linha de comando do Windows) para todos os arquivos é *.* . Como em "arquivos sempre tem uma extensão, às vezes é uma string vazia". E nomes de arquivos não podem terminar com .
Portanto, mascarar * canonicamente significa "arquivos com extensão vazia". Mas alguns utilitários, incluindo xcopy como você encontrou, automagicamente expandem * para *.* porque ... bem, eu não procuro lógica quando não há uma. Então, * é o atalho para *.* em alguns casos.
Além disso, xcopy é aparentemente muito inteligente e substitui a extensão mesmo com
xcopy *.* *.*.bak
para adicionar .bak extension, use% comumcopy com
copy * *.*.bak
(observe que copy * *.bak ainda substituirá extensão)
ou, se você
FOR %%I IN (*.*) DO xcopy %%I "%%~I.bak"
(em uma linha de comando interativa, use um único sinal de porcentagem % em vez de %% )