O curinga de caractere único do Windows retorna mais que o esperado

3

Estou tentando fazer uma listagem de diretórios de arquivos com nomes de arquivos consistindo de 8 caracteres seguidos por um ponto e uma extensão de arquivo no shell de comando do Windows. O padrão curinga que estou usando é "????????. TIF". Isso retorna TODOS os nomes de arquivos com a extensão ".TIF", independentemente do tamanho da parte de pré-extensão do nome do arquivo. Exemplo:

dir A * .TIF

Retorna ABCDEFGH.TIF e ABCDEFGHIJ.TIF

dir ????????.TIF

Também retorna os dois arquivos. Espero que apenas o primeiro seja retornado, já que é o único dos dois que corresponde ao padrão (8 caracteres únicos seguidos de ".TIF"). Qual é a explicação para esse comportamento?

Agradecemos antecipadamente por qualquer resposta.

    
por E Brown 14.09.2010 / 17:36

3 respostas

7

Acho que o problema é que ABCDEFGHIJ.TIF tem um nome abreviado de algo como ABCDEF~1.TIF e está sendo corresponde ao seu padrão.

Se você usar DIR /X , verá os nomes curtos - por exemplo. o nome do arquivo 8.3 - de todos os seus arquivos.

Você pode tentar algo assim:

DIR /B | FINDSTR /R /I "^........\.TIF"

Isso usa FINDSTR no modo de expressão regular para garantir exatamente 8 caracteres antes do .TIF . Para obter mais ajuda sobre FINDSTR, insira FINDSTR /? em uma linha de comando.

    
por 14.09.2010 / 17:42
2

Se você quiser corrigir isso, abra um prompt de comando elevado e digite:

fsutil 8dot3name set 1

Os arquivos existentes ainda exibirão o problema até você remover o nome de arquivo curto. Novos arquivos copiados / criados não terão o problema. Se você precisar coletar nomes de arquivos curtos em massa, poderá usar:

fsutil 8dot3name strip /s <directory>

O problema parece derivar do Windows 7 usando o nome de arquivo curto para caracteres curinga, em vez do nome de arquivo longo.

    
por 08.04.2011 / 20:58
0

? significa corresponder a qualquer caractere único . Ao fazer um dir ????????.TIF , você está retornando todos os arquivos com 8 caracteres e uma extensão .tif , enquanto dir A*.tif significa retornar todos os arquivos que começam com A ou 'a' e têm .tif como extensão

    
por 14.09.2010 / 17:46