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?.bar
corresponderá ao arquivofoo.bar
, masfoo?bar
não corresponderá afoobar
nemfoo.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
zip
em 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 *.zip
Se você quiser excluir também arquivos cujas respectivas extensões terminam com
zip
(por exemplo,ezip
), use o seguinte comando:ATTRIB -A *.*zip
Como
*.*zip
será 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
/AA
do 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.