Ping todos os endereços IP em um arquivo de texto?

9

Digamos que eu tenho aqui um arquivo de texto com alguns nomes de computador (cada linha == 1 nome):

computerA
computerB
computerC
...

É possível criar um arquivo em lotes que está executando ping em todos esses computadores? E, na verdade, um ping é uma grande saída. Não preciso da timeou de outras informações; Eu só gostaria de saber acessível ou não. Alguma ideia?


Está funcionando agora! O problema era como a fox disse, que eu nomeei meu arquivo em lotes como ping.bate ping também é um comando, para que isso não funcionasse. Renomeei o arquivo em lotes e agora está tudo bem.

sabisabi
fonte
11
Veja o forcomando, especialmente o modo de análise de arquivo.
Damien_The_Unbeliever

Respostas:

12

Tente o seguinte:

@echo off
for /f "delims=" %%a in (computerlist.txt) do ping -n 1 %%a >nul && (echo %%a ok) || (echo %%a failed to respond) 
pause

Se você precisar usar um nome de arquivo ou caminho com espaços ou caracteres ímpares, em vez de (computerlist.txt)usar( ' type "c:\folder\computer file.txt" ' )

foxidrive
fonte
Vejo que o cmd está aparecendo muito em breve e depois se foi. Mesmo com pausa ou sono no final, não vejo nenhuma saída.
Sabisabi 29/04
Experimente o código editado acima, que inclui a resposta OK.
Nenhuma mudança, isso é estranho. Eu copio exatamente o mesmo código (ok, eu mudo o nome do arquivo) que você postou lá em um arquivo de texto -> eu salvei como um .bat e depois iniciei o arquivo .bat -> cmd aparecendo e depois desapareceu qualquer saída. Estou usando o win xp, isso pode ser um problema?
Sabisabi 29/04
Seu caminho \ nome do arquivo provavelmente contém espaços. Em vez de (ComputerList.txt) uso ( 'tipo "c: \ pasta \ arquivo.txt computador"')
3
Esse é o seu erro. Lembre-se sempre de que, ao nomear um arquivo em lotes, evite usar o nome de um comando. No seu caso, o comando ping dentro do arquivo em lotes está executando o arquivo em lotes ping e não o comando ping.
4
@Echo OFF

For /F "Usebackq Delims=" %%# in (
    "List.txt"
) do (
    Echo+
    Echo [+] Pinging: %%#

    Ping -n 1 "%%#" 1>nul && (
        Echo     [OK]) || (
        Echo     [FAILED])
)

Pause&Exit

Resultado:

[+] Pinging: www.google.com
    [OK]

[+] Pinging: ffff
    [FAILED]
ElektroStudios
fonte
Quando inicio meu .bat, vejo a saída [+] Pinging: computerA, mas a janela está desaparecendo.
Sabisabi 29/04
Você votou no meu script como está sem várias alterações?
ElektroStudios
Bem, eu mudei o nome do arquivo, mas isso é ele
sabisabi
@sabisabi: inicie o arquivo em lotes "manualmente" em um prompt de comando existente, para poder ler a mensagem de erro. Não clique duas vezes em arquivos em lotes que você precisa testar.
precisa saber é o seguinte
@a_horse_with_no_name se eu começar o arquivo .bat via cmd (ping.bat) -> não há nenhuma nova janela e meu cmd está fechando-se sem qualquer mensagem
sabisabi
1

Uma alternativa que você pode querer procurar é usar o PowerShell:

cls;
ForEach ($targetComputer in (Get-Content C:\installs\computerlist.txt)) {
    if (Test-Connection -ComputerName $targetComputer -Count 1 -Quiet) {
        "$targetComputer - Ping OK"
    } else {
        "$targetComputer - Ping FAIL"
    }
}

Substitua o conteúdo de C: \ Instalações \ ComputerList.txt e você está ausente :)

insira a descrição da imagem aqui

Fazer87
fonte
0

Criei uma ferramenta de ping que usa um arquivo de configuração para definir quais ips devem ser executados e cria janelas de até 12 cmd e as coloca lado a lado na tela. Cada janela tem uma descrição no título, também do arquivo de configuração.

Ele detecta automaticamente o tamanho da tela, mas atualmente suporta apenas 1920x1080 e 1600x900. Você pode criar mais resoluções manualmente embora. Veja credits.txt para informações.

HellFires Pingtest v1.0

Lord HellFire
fonte
0

Você pode tentar usar a ferramenta que eu desenvolvi - ccmd - para ajudar em tarefas semelhantes; ele executa qualquer comando do terminal em vários destinos; os destinos podem ser dados no arquivo de texto csv, como: #
this is a comment line
#target, description, comando (padrão - ping)
8.8.8.8
1.1.1.1
# no comando abaixo {target} será substituído por 8.8.4.4
8.8.4.4, DNS do Google, ping -n 1 -w 500 {target}
192.168.1.0/30, my sub-rede
bbc.com, este é o site de notícias bbc

salve o arquivo acima em name.txt e aponte o script para ele com a opção -s; por padrão, ele executará o comando ping se nenhum outro comando for fornecido.
Execute-o com:
ccmd.exe -s nome.txt -b 10 -c 30
revela essa saída: https://i.stack.imgur.com/23zxQ.png

script escrito em python, mas possui a versão ccmd.exe, que pode ser executada diretamente no Windows. Por padrão, o comando de detalhes detalha a saída salva na pasta ./LOG/.

Fonte: https://github.com/apraksim/ccmd

apraksim
fonte