Problema
Listar todos os arquivos que possuem zip no nome da base (antes do último ponto, se houver) é complicado por dois motivos:
-
O Windows possui apenas dois curingas:
*e?.*corresponde a qualquer número de caracteres (incluindo zero).?corresponde exatamente a um caractere (exceto pelo ponto), a menos que seja o último caractere do padrão, seguido por um ponto, somente outros curingas ou apenas outros curingas e um ponto. 1 -
Não há extensão real em nomes extensos de arquivos. A GUI pode tratar tudo o que segue o último ponto como a extensão do arquivo, mas isso é apenas uma convenção.
Para piorar,
.tem um significado especial no prompt de comando. Antes do LFN, todo arquivo tinha uma extensão (embora pudesse estar vazio). Portanto,*.*corresponde a todos os arquivos, enquanto*corresponde apenas a arquivos com extensão vazia.Para manter alguma compatibilidade com versões anteriores,
.é ignorado se for seguido apenas por curingas e outros pontos, exceto se os pontos forem adjacentes e seguidos por pelo menos um caractere curinga ou se não houver nenhum caractere curinga e no máximo um asterisco antes do ponto. 1
Exemplos:
-
foo?.barcorresponderá ao arquivofoo.bar, masfoo?barnão corresponderá afoobarnemfoo.bar. -
*,*.*,*.*.,*.*.*e**.corresponderão a todos os arquivos de uma determinada pasta, enquanto*.,*..e*..*não corresponderão.
Solução alternativa
A menos que você esteja usando o arquivo para realizar backups incrementais 2 , há um maneira de exibir os arquivos que você está interessado (e somente aqueles), usando apenas DIR e o comando ATTRIB .
Etapas:
-
Primeiro, defina o bit de arquivo em todos os arquivos que contenham
zipem qualquer lugar em seus respectivos nomes de arquivo:ATTRIB +A *zip* -
Agora, desmarque o bit de arquivo em todos os arquivos com a extensão
zip:ATTRIB -A *.zipSe você quiser excluir também arquivos cujas respectivas extensões terminam com
zip(por exemplo,ezip), use o seguinte comando:ATTRIB -A *.*zipComo
*.*zipserá testado em relação aos nomes de arquivo 8.3, isso também corresponderá aos arquivos cujas respectivas extensões começam comzip(por exemplo,zipx), a menos que os nomes de arquivo 8.3 não estejam presentes ou tenham sido alterados . -
Como o comando anterior desabilitou o bit de arquivamento em arquivos como
nanozip.zip, redefina-os:ATTRIB +A *zip*.*zip -
Agora, você pode usar a opção
/AAdo comando DIR para mostrar apenas arquivos com um bit de archive definido:DIR /AA *zip*
Com a opção /S no DIR e a opção /S [/D] no ATTRIB, isso até funciona para arquivos em subdiretórios.
1 Isso é uma lista de peculiaridades, em vez de uma explicação exaustiva sobre o comportamento de caractere curinga.
2 O NTBackup do Windows XP, por exemplo, respeita o bit de arquivo.