Por que o comando MOVE no DOS trata os padrões curinga de maneira estranha neste caso?

1

Estou usando o comando "move" com um padrão curinga no prompt do CMD no Windows 7.

No meu diretório de origem, eu tenho os seguintes arquivos:

 movie1.avi
 movie1.avi_metadata
 movie2.avi
 movie2.avi_metadata

Se eu digitar o comando move source\*.avi dest , ele moverá todos os quatro arquivos, embora eu espere que ele mova apenas os dois arquivos *.avi e não os arquivos *.avi_metadata .

Como esperado, move source\*.a dest e move source\*.av dest não movem nenhum arquivo. No entanto, quando o comprimento da extensão do padrão curinga for de 3 caracteres, ele moverá todas as extensões que começam com esses três primeiros caracteres.

Este é um bug no comando "move" ou comportamento esperado e está documentado em algum lugar?

Editar: John Watts observa que isso provavelmente é feito para nomes de arquivo "curtos".

É possível, então, fazer com que comandos no interpretador CMD operem apenas em nomes de arquivos longos e ignorar nomes de arquivos curtos?

    
por Adisak 30.08.2012 / 17:58

1 resposta

2

Você pode canalizar DIR / B através de FINDSTR para filtrar os arquivos indesejados. Você pode processar esses resultados usando FOR / F.

for /f "eol=: delims=" %F in ('dir /b /a-d source\*.avi^|findstr /lie .avi') do move "source\%F" dest
    
por 30.08.2012 / 19:45