loop do Windows FOR comparado ao comando DIR

1

Alguém pode explicar essa diferença?

Dado um diretório que contém os seguintes arquivos / dirs:

09-Sep-16  14:14    <DIR>          ignoreMe
09-Sep-16  14:13    <DIR>          ignore.me
09-Sep-16  14:13                 0 myfile1.txt
09-Sep-16  14:13                 0 myfile2.txt

O comando: for %i in (*) do echo %i será enviado:

myfile1.txt
myfile2.txt

(o que significa que apenas envia arquivos, não dirs)

No entanto, este comando: dir * resultará:

ignoreMe
ignore.me
myfile1.txt
myfile2.txt

(o que significa que gera arquivos e dirs)

Observe que o mesmo GLOB é usado nos dois casos, mas eles produzem resultados diferentes . Não deveria ser consistente?

Alguém pode explicar por quê?

    
por Peter Hansson 09.09.2016 / 15:03

1 resposta

1

Estas são as opções que você tem:

  • arquivos: for %i in (*) do @echo %i
  • subdirs: for /D %i in (*) do @echo %i

Você não pode ter os dois resultados em uma única instrução for , porque subdiretórios é um comutador ( / D ) dentro do comando que modifica a saída dele .

Para mais explicações, digite for /? em cmd .

    
por 09.09.2016 / 15:18