Lista de diretórios ordenada por tamanho, mas com opt *. * no topo

1

Gostaria de listar em ordem inversa os arquivos em um determinado diretório.

Isso é fácil: use dir /o-s/b >dir.lis .

No entanto, quero que os arquivos com o nome opt *. * apareçam sempre no topo, independentemente do tamanho do arquivo.

Não sabe como fazer isso. Eu poderia fazer isso é duas etapas, como %código% e emita um segundo comando para listar o resto.

Mas como excluo opt *. * da segunda listagem?

    
por dacfer 09.06.2017 / 10:52

1 resposta

1

Como excluo opt*.* da segunda listagem?

Você pode usar findstr para conseguir isso:

dir /b /o-s *.* | findstr /bivr /c:"opt*.*"

Onde:

  • /b Corresponde padrão se no início de uma linha.

  • /i Pesquisa sem distinção entre maiúsculas e minúsculas

  • /v Imprimir apenas as linhas que NÃO contêm correspondência

  • /r Use string como uma expressão regular

  • /c"string" Use string como string de pesquisa literal (pode incluir espaços)

Portanto, colocar os dois comandos a seguir juntos fará o que você quiser (liste os arquivos opt*.* primeiro)

rem get opt*.* files
dir /b /o-s opt*.* > dir.lis
rem get the rest of the files excluding opt*.*
dir /b /o-s *.* | findstr /bivr /c:"opt*.*" >> dir.lis

Leitura Adicional

por 09.06.2017 / 11:25