cmd tem bug curinga? [duplicado]

3

Esta pergunta já tem uma resposta aqui:

Arquivos na pasta:

a.j
ab.jp
abc.jpg
abcd.jpeg

dir resultados do comando:

Command       Result (Files shown)
----------    --------------------
dir ?.*       a.j
dir ??.*      a.j, ab.jp
dir ???.*     a.j, ab.jp, abc.jpg
dir ????.*    a.j, ab.jp, abc.jpg, abcd.jpeg

Então, podemos ver um único ?, significa "0 ou 1 letra".

Agora, mais dirresultados de comando:

Command       Result (Files shown)
----------    --------------------
dir *.?       a.j
dir *.??      a.j, ab.jp
dir *.???     a.j, ab.jp, abc.jpg, abcd.jpeg --> What is this?!
dir *.????    a.j, ab.jp, abc.jpg, abcd.jpeg

No terceiro comando, por que ???está mostrando jpeg? Você pode explicar? Esse bug está no cmd?

Živka Blažević
fonte
3
É preciso perguntar a si mesmo. O que é mais provável. Um bug em um programa que não mudou em funcionalidade desde que foi introduzido pela primeira vez ou o próprio usuário entende incorretamente como o comando funciona?
Ramhound
@ Ramhound: Isso pode não ser um bug, mas certamente você não está sugerindo que o cmd não tem bugs? :) Existem todos os tipos de casos extremos estranhos e comportamento não documentado. Está tudo bem, mas mal foi tocado até o Win10, que adicionou alguns novos recursos cosméticos, mas não acho que os bugs foram corrigidos.
Karan
@Karan Eu nunca disse que não poderia ser um bug simplesmente não sugeriu a compreensão de como uma característica trabalhada é mais provável considerando prompt de comando não mudou em idades
Ramhound

Respostas:

7

Isso está acontecendo porque os três pontos de interrogação correspondem à extensão da versão curta do nome do arquivo. Usar

dir /x

para mostrar (e trabalhar com) versões curtas de nomes de arquivos.

boot13
fonte
11
Esse parece ser o motivo correto, que pode ser confirmado usando o que o snoopy escreveu.
Karan
11
Tenho certeza de que é a resposta. Uma vez eu digitei dire descobri que havia alguns arquivos que eu queria remover 1no final do nome, então digitei del ???????1.*apenas para descobrir que a maioria dos arquivos com nomes longos também foram excluídos! Felizmente, mantenho cópias de segurança copiosas, mas é um erro que se comete apenas uma vez.
AFH
2

Sobre o problema de extensões com mais de três caracteres: Isso é causado pela maneira como os nomes curtos dos arquivos são criados. Você pode resolver isso definindo Win95TruncatedExtensionsno registro:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"Win95TruncatedExtensions"=dword:00000000

Especifica se NTFS e FAT geram nomes de arquivos para novos arquivos com a convenção de nomenclatura 8.3.

Definir o valor dessa entrada como 1 não altera nenhuma extensão de nome de arquivo existente, nem altera a maneira como essas extensões são exibidas ou gerenciadas pelo Find, File Manager ou Windows Explorer. No entanto, faz com que NTFS e FAT gere nomes abreviados para novos arquivos e trunque o terceiro caractere das extensões de nome de arquivo.

O valor padrão é 1

insira a descrição da imagem aqui

Mas lembre-se de que isso afetará apenas os arquivos recém-criados ou copiados.

(você pode copiar todos os arquivos no seu disco rígido. Você deve fazer essa configuração do registro como uma das primeiras ações ao instalar um sistema Windows.)

Konrad
fonte
1

O prompt de comando usa o sistema de nome de arquivo curto. Isso significa que quando um arquivo tiver mais de 8 caracteres antes do ponto, os 6 primeiros serão usados ​​+ ~ 1. O mesmo se aplica quando você usa 4 caracteres ou mais atrás do. Em seguida, ele usará os 3 primeiros caracteres da extensão e nomeará o arquivo de maneira diferente (primeiros 6 + ~ 1). Portanto, um .jpegarquivo está sendo visto no prompt de comando ??????~1.jpee, como tal, corresponderá*.???

Use dir /xpara ver arquivos com seu nome de arquivo curto.

LPChip
fonte
dir / x mostra .JPEG como .JPE, portanto, sua afirmação de que é vista como .J ~ 1 parece incorreta.
Karan
@ Karan ah, você está certo. ele altera o primeiro nome para ~ 1 e usa os 3 primeiros da extensão. Tnx. Irá corrigi-lo.
LPChip