Qual comando você usaria cmd.exe
para 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!
Se você quiser fazer isso com
cmd
, o seguinte é a maneira trivial de fazer isso:Isso está assumindo a linha de comando. Em um arquivo de lote você faria
que faz as coisas um pouco melhor. Você pode soltar o
>nul
em um lote, poisset /a
nã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 nofor
loop 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:
Usando
find /c /v
e 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.Usando
find /c
e tente encontrar algo que esteja sempre incluído em um nome de arquivo. Obviamente, o ponto (.
) é uma má escolha. Outra resposta sugereque 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
find
quedir /b
elimina 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:
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).
Pergunte e você receberá: http://technet.microsoft.com/en-us/library/ee692796.aspx
FYI .. Eu pesquisei "arquivos de contagem de powershell".
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.
O método mais rápido que encontrei é executar o seguinte no console PS.
onde $path é um caminho local ou compartilhamento UNC.
dir
fornece a contagem total de arquivos na parte inferior.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 "~~~"
Achei isso na net:
Testei e parece funcionar.
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 .
dir
retorna o número de arquivos e diretórios na parte inferiorDIR, é claro, funcionará
Sem instalar algo no servidor, mas com o powershell em sua estação de trabalho, você pode fazer:
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
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