web-dev-qa-db-fra.com

Comment faire un ping sur un serveur une seule fois à partir d'un fichier batch?

Je veux apprendre à écrire des scripts batch et j'ai essayé de créer un script qui lance automatiquement cette commande une fois dans la ligne de commande:

ping www.google.de -t

et affiche le ping, donc cela ressemblerait à ceci:

Reply from XXX.XXX.X.XX: time=30ms
Reply from XXX.XXX.X.XX: time=31ms
Reply from XXX.XXX.X.XX: time=29ms

Mon problème est que cela entraînera ceci lorsque j'exécuterai cette commande en tant que script:

Screenshot showing output on running the batch file.

Mon problème est qu'il n'exécutera pas la commande ping du tout, mais insérera simplement la commande un nombre illimité de fois dans la fenêtre de la console, comme indiqué sur la capture d'écran.

Je viens de créer un nouveau fichier, d'écrire ping www.google.de -t dedans, de l'enregistrer en tant que fichier ping.bat et de l'exécuter en double-cliquant dessus.

Alors, comment écrire le fichier de commandes pour démarrer cette commande une seule fois et afficher le résultat du ping?

9
Peter

Entrez dans une commande Invite window ping /? et lisez la sortie d’aide abrégée après avoir appuyé sur RETURN. Ou jetez un oeil sur

  • Ping - Documentation de Windows XP
  • Ping - Article Microsoft TechNet

Explication de l'option -t donnée par Microsoft:

Envoie une requête ping à l'hôte spécifié jusqu'à ce qu'il soit arrêté. Pour voir les statistiques et continuer, tapez Control-Break. Pour arrêter, tapez Control-C.

Vous voudrez peut-être utiliser:

@%SystemRoot%\system32\ping.exe -n 1 www.google.de

Ou pour vérifier d'abord si un serveur est disponible:

@echo off
set MyServer=Server.MyDomain.de
%SystemRoot%\system32\ping.exe -n 1 %MyServer% >nul
if errorlevel 1 goto NoServer

echo %MyServer% is availabe.
rem Insert commands here, for example 1 or more Net Use to connect network drives.
goto :EOF

:NoServer
echo %MyServer% is not availabe yet.
pause
goto :EOF
15
Mofi

Je suis sûr que vous devez avoir nommé le fichier bat correspondant sous le nom "ping.bat". Si vous renommez votre fichier en quelque chose d'autre, dites pingXXX.bat. Cela fonctionnera certainement. Essaye le.

mon fichier de commandes contient uniquement le code ci-dessous

ping 172.31.29.1 -t

avec un nom de fichier comme ping.bat enter image description here

avec le nom de fichier abc.bat

enter image description here

33
Dhirendra Khanka

Vous ne savez pas exactement ce que vous essayez, mais votre code posté devrait fonctionner correctement. Si vous ne souhaitez pas que la commande soit affichée, ajoutez @echo off au début de votre script. Si j'ai le code ci-dessous dans un fichier nommé test.bat et que je l'exécute en tant que commande test.bat, cela fonctionnera parfaitement.

@echo off
ping www.google.de -t

Pour adresser votre EDIT: où la préoccupation principale est la commande ping n'était pas reconnaissable. La commande ping sera généralement située sous C:\Windows\System32\, où C:\ sera le répertoire racine. Si le répertoire racine est différent, vous pouvez l’obtenir à l’aide de la variable d’environnement %SystemRoot% et indiquer ce qui suit:

%SystemRoot%\Windows\System32\PING.EXE www.google.de -t

Une autre façon de savoir si la commande que vous essayez d'exécuter est reconnaissable ou non consiste à utiliser la commande WHERE comme ci-dessous.

where ping

Si la commande est reconnaissable; il sortira le chemin comme 

C:\Windows\System32\PING.EXE

Sinon, entraînera une erreur

4
Rahul

si vous voulez utiliser le nom "ping.bat", une petite astuce consiste à utiliser ce code:

@echo off
cd\ 
ping google.com -t

Il suffit d’ajouter que "cd \" et vous allez bien ...;)

2
Phantom

Je sais pourquoi, vous utilisez le nom de fichier "ping" et le code "ping", il continue d'essayer de s'exécuter parce que son répertoire sélectionné, où se trouve ce fichier, est bien avant la commande ping: "cd C:\Windows\system32", le fichier contenant le ping du serveur est là!

2
JacobRocks12

Pour bash (OSX) ping google.com -c 1 (la recherche de casse vous a amené ici)

1
Ashley Coolman

À partir d'un fichier de commandes, envoyez une seule adresse IP à une adresse IP à l'aide de la commande suivante:
Ping 192.168.199.10 -n 1

 enter image description here

1
A.Gopal Reddy

Avoir 2 scripts appelés test.bat et ping.bat dans le même dossier:

Le script test.bat contient une ligne:

ping google.com

Le script ping.bat contient les lignes suivantes: 

@echo off
echo Hello!
pause

En exécutant "test.bat", le résultat sur CMD sera:

Hello!
Press any key to continue . . .

Pourquoi? Parce que "test.bat" appelle "ping.bat" ("ping google.com" est interprété comme appelant le script "ping.bat") . La même chose se produit si le script "ping.bat" contient "ping google.com ". Le script s’exécutera en boucle.

Des moyens faciles d'éviter cela:

  1. Ne nommez pas votre script "ping.bat".
  2. Vous pouvez nommer le script "ping.bat", mais utilisez "ping.exe google.com" à la place de "ping google.com".
0
DragosD

j'ai utilisé exemple Mofi, et modifier certains paramètres, non, vous pouvez le faire -t

@% SystemRoot%\system32\ping.exe -n -1 4.2.2.4

0
deadManN

Juste Écrivez la commande "Envoyez une requête ping à votre serveur IP" sans la citation double. Enregistrez le nom de fichier sous le nom nom de fichier.bat, puis exécutez le fichier de commandes en tant qu'administrateur.

0
Mahfuze

La seule chose à laquelle vous devez penser dans ce cas est de savoir dans quel répertoire vous êtes sur votre ordinateur . Votre fenêtre de ligne de commande affiche C:\users\rei0d\desktop\ comme répertoire actuel.

Donc, la seule chose que vous devez vraiment faire est: 
Supprimez la desktop en "remontant" avec la commande cd ..

Donc, la commande complète serait: 

cd ..
ping XXX.XXX.XXX.XXX -t
0
Tor