Ich habe in Windows 7 eine BAT-Datei mit der folgenden Zeile erstellt:
PING XXX.XXX.XXX.XXX -t
(XXX ersetzt die tatsächliche IP-Nummer). Wenn ich jedoch auf diese Batchdatei doppelklicke, wird der Ping-Befehl wiederholt in einer Schleife ausgeführt. Ich habe sogar versucht, das in umzubenennen ping.BAT
, ping.CMD
aber das Ergebnis ist das gleiche.
Ich möchte vermeiden, einen Ping-Befehl über die Eingabeaufforderung zu schreiben, weshalb ich die Batch-Datei erstellt habe. Ich weiß nicht, warum der Ping-Befehl kontinuierlich aufgerufen wird, wenn dieselbe Anweisung in eine Batch-Datei eingefügt wird.
windows-7
batch-file
ping
pradeetp
quelle
quelle
-t
macht es.Antworten:
Es ist ein bisschen unklar, mit welchem Problem Sie genau konfrontiert sind, da Sie keine Ausgabe oder keinen Screenshot von dem bereitstellen, was Ihnen nicht gefällt, aber ich werde die beiden wahrscheinlichsten Probleme erklären, die ich sehe:
Vorausgesetzt, Ihr Skript wird aufgerufen
ping.bat
und sieht folgendermaßen aus:dann
cmd.exe
durchsucht / prüft der Interpreter ( ) die Pfade in der Umgebungsvariablen%PATH%
nach etwas, das aussiehtping
... und tut dies, indem er jedes Suffix anfügt, von%PATHEXT%
dem etwas wie enthält.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
. Also, nurping
von denping.bat
Leads zu einer Suche nachping.com
ping.exe
ping.bat
und so weiter anrufen . Der Dolmetscher findet einping.bat
im aktuellen Arbeitsverzeichnis (Ihrping.bat
) und ruft es auf.Sie haben hier also eine schöne Rekursion : ping.cmd führt die erste Zeile aus, sucht nach "ping", findet "ping.cmd", führt die erste Zeile aus, sucht nach "ping", findet "ping.cmd", führt aus Die erste Zeile sucht nach "ping" und findet "ping.cmd" ...
Das zweite Problem, das Sie möglicherweise haben, ist Folgendes:
Der Interpreter der Batch-Datei wiederholt normalerweise die Befehle, die Sie in die .bat / .cmd-Datei geschrieben haben. So etwas
ping www.superuser.com
sieht also so aus:Wenn Sie
C:\Users\XYZ\Desktop>ping www.superuser.com
die Ausgabe des Skripts@
entfernen möchten, müssen Sie entweder jeder Zeile ein (z. B. '@ping www.superuser.com') im Skript voranstellen oder ein@echo off
vor den Befehlszeilen einfügen wollen "leise" ausführen.TL; DR; Rufen Sie Ihre Bat-Dateien nicht wie vorhandene Programme auf.
quelle
Ich hatte das gleiche Problem,
ping.bat enthielt mehrere Zeilen des Ping-Befehls
Die Ausgabe in der cmd-Shell sah wie folgt aus und wurde in einer Schleife bis zum Bruch mit ctrl+ fortgesetztC
Um es zu lösen, benennen Sie einfach das um
ping.bat
, damit es sich nicht in der Batch-Datei aufruft oder ping.exe als Befehl in der Batch-Datei verwendetquelle
Der Parameter -t macht den Ping kontinuierlich.
Entfernen Sie möglicherweise den Parameter -t und weisen Sie Ihr Batch-Skript an, darauf zu warten, dass Sie die Eingabetaste drücken, bevor Sie den cmd-Bildschirm beenden.
Ich habe seit einiger Zeit keine Fenster mehr benutzt, aber das sollte funktionieren:
quelle
Ich hatte die gleichen Probleme. Hier ist die Auflösung:
Benennen Sie Ihre ping.bat-Datei in pingtest.bat um
Und stellen Sie sicher, dass es enthält:
ping xxx.xxx.xxx.001
ping xxx.xxx.xxx.002
ping xxx.xxx.xxx.003
pause
Auf diese Weise können Sie eine oder mehrere Adressen anpingen und die Ergebnisse auf dem Bildschirm anzeigen. Diese Batchdatei kann von überall auf Ihrem PC ausgeführt werden, indem Sie darauf doppelklicken.
quelle
Die lokale Skriptausführung scheint zu verhindern, dass ping.exe in einem Skript ausgeführt wird. Versuchen Sie, mit der rechten Maustaste zu klicken und "Als Administrator ausführen". Ich suche nach Informationen zum Aktualisieren der Ausführungsrichtlinie.
Gerade als ich dachte, ich wüsste etwas über Windows, haben sie es geändert.
Update: Rekursion ist die Antwort ...
Sie können es nicht ping.bat und ping.exe nennen
Sie können es auch nicht route.bat und route.exe nennen.
Wenn ich z. B. ping.bat ausführe, führen Sie es erneut als pingx.bat aus:
quelle
Rechtsklick - Als Administrator ausführen hat für mich gearbeitet.
quelle
Dies liegt daran, dass Sie die Batchdatei so benennen, wie der Ping-Befehl benannt ist. Benennen Sie Ihre Batch-Datei in etwas anderes um. Usw. myping.bat
quelle
Mit anderen Worten, benennen Sie Ihre Batch-Datei nicht (Ping) . Verwenden Sie einen beliebigen anderen Dateinamen. Und der folgende Code funktioniert einwandfrei.
quelle