AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 110725
Accepted
p.campbell
p.campbell
Asked: 2010-02-09 09:12:40 +0800 CST2010-02-09 09:12:40 +0800 CST 2010-02-09 09:12:40 +0800 CST

Prompt de comando do Windows: como obter a contagem de todos os arquivos no diretório atual?

  • 772

Qual comando você usaria cmd.exepara encontrar o número de arquivos no diretório atual?

Existe uma opção de powershell aqui?

Atualização : eu esperava evitar dir, pois sei que existem mais de 10.000 arquivos no diretório atual. Queria evitar a saída de enumeração para a janela cmd. Obrigada!

powershell command-line-interface windows-command-prompt directory
  • 13 13 respostas
  • 200436 Views

13 respostas

  • Voted
  1. Best Answer
    Joey
    2010-02-10T09:31:49+08:002010-02-10T09:31:49+08:00

    Se você quiser fazer isso com cmd, o seguinte é a maneira trivial de fazer isso:

    set count=0 & for %x in (*) do @(set /a count+=1 >nul)
    echo %count%
    

    Isso está assumindo a linha de comando. Em um arquivo de lote você faria

    @echo off
    setlocal enableextensions
    set count=0
    for %%x in (*) do set /a count+=1
    echo %count%
    endlocal
    

    que faz as coisas um pouco melhor. Você pode soltar o >nulem um lote, pois set /anão exibirá o resultado se executado a partir de um arquivo de lote - ele exibe diretamente da linha de comando. Além disso, o %sinal no forloop deve ser duplicado.

    Eu vi alguns casos em que as pessoas tentam truques bacanas com arquivos find /c. Tenha muito cuidado com isso, pois várias coisas podem quebrar isso.

    Erros comuns:

    1. Usando find /c /ve tente encontrar algo que nunca esteja incluído em um nome de arquivo, como ::. Não vai. Trabalhar. Confiável. Quando a janela do console está configurada para fontes raster, você pode obter essas combinações de caracteres. Posso incluir caracteres em um nome de arquivo como :, ?, etc. em suas variantes de largura total, por exemplo, que serão convertidas em suas contrapartes ASCII normais, o que interromperá isso. Se você precisar de uma contagem precisa, não tente isso.

    2. Usando find /ce tente encontrar algo que esteja sempre incluído em um nome de arquivo. Obviamente, o ponto ( .) é uma má escolha. Outra resposta sugere

      dir /a-d | find /c ":"
      

      que assume várias coisas sobre a localidade do usuário, nem todas são garantidas como verdadeiras (deixei um comentário detalhando os problemas lá) e retorna um resultado a mais.

    Geralmente, você deseja usar o findque dir /belimina todas as coisas que não são nomes de arquivo e evita erros de poste de vedação dessa maneira.

    Então a variante elegante seria:

    dir /b /a-d | find /c /v ""
    

    que produzirá primeiro todos os nomes de arquivos, uma linha cada. E então conte todas as linhas dessa saída que não estão vazias. Como o nome do arquivo não pode estar vazio (a menos que esteja faltando alguma coisa, mas o Unicode não fará isso de acordo com meus testes).

    • 32
  2. Trevoke
    2010-02-09T09:35:44+08:002010-02-09T09:35:44+08:00

    Pergunte e você receberá: http://technet.microsoft.com/en-us/library/ee692796.aspx

    Contando o número de itens em uma pasta

    Bem, o que você sabe: parece que o sol está finalmente saindo, o que significa que está quase na hora de irmos. Antes, porém, vamos mostrar um último truque com o cmdlet Get-ChildItem. Às vezes você não precisa saber muito sobre os arquivos em uma pasta; tudo o que você realmente precisa saber é quantos arquivos (se houver) podem ser encontrados em uma pasta específica. Veja como você pode contar rapidamente o número de arquivos em uma pasta:

    (Get-ChildItem C:\Scripts).Count
    

    o que você está fazendo aqui? Estamos simplesmente usando Get-ChildItem para retornar uma coleção de todos os itens encontrados na pasta C:\Scripts; como esta é uma coleção, tudo o que precisamos fazer é retornar o valor da propriedade Count, que nos informa o número de itens na coleção. Observe o uso de parênteses: colocamos o comando Get-ChildItem entre parênteses para garantir que o Windows PowerShell primeiro capture a coleção e só então ecoe o valor da propriedade Count dessa coleção.

    E claro, você pode incluir um filtro ao chamar Get-ChildItem. Precisa saber quantos arquivos .PS1 estão na pasta C:\Scripts? Pode deixar:

    (Get-ChildItem C:\Scripts -filter "*.ps1").Count
    

    FYI .. Eu pesquisei "arquivos de contagem de powershell".

    • 17
  3. rossnz
    2010-04-07T18:37:41+08:002010-04-07T18:37:41+08:00
    dir /a-d | find "File(s)"
    

    Uma palavra de aviso sobre o uso do PowerShell para operações de arquivo simples como esta - é incrivelmente lento em comparação com o cmd.exe, especialmente em conexões de rede ou quando há milhares de arquivos no diretório. Veja esta postagem do fórum para mais informações.

    • 9
  4. John Brooks
    2017-05-31T02:58:48+08:002017-05-31T02:58:48+08:00

    O método mais rápido que encontrei é executar o seguinte no console PS.

    [System.IO.Directory]::GetFiles($path).Count
    

    onde $path é um caminho local ou compartilhamento UNC.

    • 9
  5. lorenzog
    2010-02-09T09:14:08+08:002010-02-09T09:14:08+08:00

    dirfornece a contagem total de arquivos na parte inferior.

    • 7
  6. Garcia
    2012-12-04T05:20:34+08:002012-12-04T05:20:34+08:00

    apenas conte as linhas da saída dir /B (diretórios incluídos):
    dir /B | find /c /v "~~~"

    para apenas contar arquivos (sem dirs):
    dir /A-D /B | find /c /v "~~~"

    • 3
  7. Kelsey
    2010-02-09T09:21:01+08:002010-02-09T09:21:01+08:00

    Achei isso na net:

    dir /a-d | find /c ":" > NUMfiles.###
    set /p count=<NUMfiles.###
    echo %count%
    

    Testei e parece funcionar.

    • 2
  8. Heather M.
    2011-02-25T16:16:03+08:002011-02-25T16:16:03+08:00

    Apenas uma ressalva para aqueles que podem usar a resposta do PowerShell do Trevoke acima ( prompt de comando do Windows: como obter a contagem de todos os arquivos no diretório atual? ): por design, ecoar a propriedade Count de uma coleção retornada por Get-ChildItem pode fornecer resultados enganosos se o valor for 1 ou 0. Isso ocorre porque a propriedade Count só está disponível em matrizes. Se menos de 2 itens forem retornados por Get-ChildItem, o resultado será escalar e .Count não retornará nada. Para contornar isso, converta-o explicitamente em um array, por exemplo, @(Get-ChildItem C:\Scripts).Count.

    Para obter mais informações, consulte http://connect.microsoft.com/PowerShell/feedback/details/354672/get-childitem-count-problem-with-one-file ou http://www.vistax64.com/powershell/266379 -get-childitem-count-not-working-one-file.html .

    • 2
  9. dyasny
    2010-02-09T09:15:06+08:002010-02-09T09:15:06+08:00

    dirretorna o número de arquivos e diretórios na parte inferior

    • 0
  10. Jim B
    2010-02-09T09:57:24+08:002010-02-09T09:57:24+08:00

    DIR, é claro, funcionará

    Sem instalar algo no servidor, mas com o powershell em sua estação de trabalho, você pode fazer:

    (gwmi -computer theserver -query "select *from cim_datafile where path = '\\'").count
    

    esse comando fornecerá todos os arquivos (sistema e ocultos incluídos) e, como mencionado anteriormente, se o powershell estiver na máquina, você pode simplesmente

    (GCI c:\*.*).count
    

    Observe que, se você não incluir o arquivo . você obterá uma contagem de todos os arquivos e todos os diretórios. Você não incluirá arquivos ocultos e de sistema que você precisa adicionar -force para contá-los todos

    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Como você reinicia o php-fpm?

    • 18 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Resolver o nome do host do endereço IP

    • 8 respostas
  • Marko Smith

    Como posso classificar a saída du -h por tamanho

    • 30 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    binaryorganic Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada? 2010-10-26 08:45:39 +0800 CST
  • Martin Hope
    tobym O que exatamente significam as cores nas barras de status htop? 2010-09-14 12:22:43 +0800 CST
  • Martin Hope
    MikeN No Nginx, como posso reescrever todas as solicitações http para https mantendo o subdomínio? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 Qual é a diferença entre colchetes duplos e simples no bash? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt Como funciona a sub-rede IPv4? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve