Eine batch Datei mehrere Befehle - keine Wartezeiten
Ich wirklich angeschaut haben mehrere Beispiele hier, aber ich kann nicht ankommen dieses zu wirken - alle Beispiele haben eine situation, wo Sie rufen Sie ein Befehl, der eigentlich nicht zu Ende, ich brauche, um mir läuft. Dies ist, was ich tun muss.
Konfigurieren Sie ein Netzwerk-Gerät, ich habe die option, dies zu tun mit einem arp
Befehl, und ein Befehl ping, aber diese müssen ausgeführt werden, in der gleichen Eingabeaufforderung, aber jedes Gerät muss in einem eigenen Fenster.
Muss ich laufen arp -s 192.168.5.5 00-CC-CC-CC-CC-CC
und wenn das fertig ist, muss ich laufen ping -l 408 -t 192.168.5.5
.
Diese beiden Befehle müssen Sie ausführen, in der gleichen Befehls-Fenster. Ich möchte offen sagen wir 30, diese in der gleichen Zeit, arp ' Ing und pingen der gleichen Adresse, in diesem bestimmten Fenster, aber verschiedene Adressen in jedem anderen Fenster (ich hoffe, das macht Sinn).
gerade jetzt, kann ich es zu laufen, aber er wartet, bis der erste Befehl zu beenden, bevor die zweite. Ich habe das START
, aber das funktioniert auch nicht.
Ja, ich denke, ich könnte erstellen 30 verschiedene batch-Dateien, aber das würde zu besiegen das Objekt, wie ich konfigurieren muss, über 500 Geräte, also die Schaffung 500 batch-Dateien nehmen würde, nur wie lange; es sei denn, eine batch-Datei erstellen, die alle erforderlichen batch-Dateien für mich?
So, ich habe eine excel-Tabelle erstellt, die alle Zeilen muss ich in der batch-Datei, und ich hatte gehofft, verwenden Sie diese:
start cmd.exe /K arp -s 192.168.5.5 00-40-8C-D4-FB-BC && ping -l 408 -t 192.168.5.5
start cmd.exe /K arp -s 192.168.5.6 00-40-8C-D4-F9-A9 && ping -l 408 -t 192.168.5.6
start cmd.exe /K arp -s 192.168.5.7 00-40-8C-D4-FB-F6 && ping -l 408 -t 192.168.5.7
start cmd.exe /K arp -s 192.168.5.8 00-40-8C-D4-FC-70 && ping -l 408 -t 192.168.5.8
start cmd.exe /K arp -s 192.168.5.9 00-40-8C-D4-FB-F4 && ping -l 408 -t 192.168.5.9
start cmd.exe /K arp -s 192.168.5.10 00-40-8C-D4-FB-F8 && ping -l 408 -t 192.168.5.10
Also, mithilfe der oben genannten, nur der erste Befehl ausgeführt wird. Wenn ich es auf ping nur sagen, dass 300-mal, es würde wechseln Sie zu der nächsten, aber auch dies würde besiegen das Objekt, weil ich muss 30 Geräte auf einmal, so wartet jeder als Erster über die Ziellinie, würde ewig dauern.
Vielleicht bin ich völlig auf der falschen Spur hier, vielleicht hat jemand eine viel bessere Idee? Bare im Hinterkopf, dass jeder der oben genannten Befehle ausführen muss, in seinem eigenen Fenster mit der Eingabeaufforderung, ansonsten ist der arp-Befehl schlägt fehl, wenn Sie versuchen zu tun, zu viele zur gleichen Zeit.
Für Klarheit auch, muss ich laufen, den arp-Befehl, und wenn das abgeschlossen ist, führen Sie den ping-Befehl
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie entkommen, Ihr &&s, und vielleicht ändern Sie nur &:
Aber, die Flucht in cmd kann schwierig werden, sehr schnell. Ich empfehle Ihnen, erstellen Sie eine single-DoPing.cmd mit alles, was Sie brauchen:
Und rufen Sie es von Ihr erstellten cmd:
Natürlich, das heißt, Sie müssen zum bereitstellen von DoPing.cmd zu, wo immer Sie sind.
^&
- und es funktionierte. Ich davon ausgegangen, dass Sie verwendet werden&&
auf Zweck - ich denke, die Flucht nicht so, wie ich es erwarte. Sie definieren nicht vars in batch-Dateien - der erste parameter %1, der zweite %2, etc - wie man sehen kann in meiner Probe.Lassen Sie uns davon ausgehen, dass Ihre Daten in eine text-Datei auf diese Weise:
Batch-Datei erstellen Sie mehrere Batch-Dateien, jeweils mit den erforderlichen Befehle ein, und starten Sie Sie. Jedes erstellte Batch-Datei löscht sich nach Beendigung seines Geschäfts.
Versuchen Sie Anführungszeichen um dein ganzes argument und auch vielleicht verwenden Sie & statt &&
zB
Problem ist, dass Sie brauchen, um zu zitieren, die Argumente übergeben, um den Befehl CMD ein. Das original :
Diese syntax öffnet sich ein CMD-Fenster auf und übergeben Sie den ARP-Befehl, um das Fenster als argument, aber nicht das && ping Teil. Stattdessen wird behandelt, als Sie den Befehl zum ausführen nach dem START.
Um dies zu korrigieren, können wir hinzufügen, Zitate, wird explizit übergeben Sie die arp-und ping als ein einzelnes argument an den Befehl CMD ein.
Darüber hinausIch sehe es vorgeschlagen, dass der start-Befehl sollte immer vorhanden sein, ein Titel, auch wenn der Titel null ist. So....
Natürlich haben Sie weitere Optionen. Die && führt den zweiten Befehl nur dann, wenn die ersten Erträge erfolgreich. So in der Theorie & könnte verwendet werden, um sicherzustellen, dass der zweite Befehl immer ausgeführt wird. Dann gibt es wieder keinen Grund, um beide pingen, wenn die arp-Aufruf fehl, so && arbeiten, die zu...
Ich nehme an, Sie verlassen das neue CMD-Fenster öffnen, auf Zweck, so können Sie die Ergebnisse sehen, aber Sie können immer mit a /c anstatt /k, automatisches schließen Sie Sie.
Als Hinweis zusammen mit der /c. Sie erwähnen in einer Antwort auf eine andere Antwort, die schlagen Strg+c tötet Sie alle Fenster. Dieses Verhalten ist normal, aber das ausführen CMD mit a /c sollte das Strg+c gelten nur für das aktuelle Fenster. Ändern Sie die folgende Zeile in die andere Antwort:
zu...
(oder so ähnlich) sollte Sie mit STRG+C in den einzelnen windows-hervorgebracht durch die Schleife.
start "" cmd /k "echo command 1 && ping -t localhost" start "" cmd /k "echo command 1 && ping -t localhost" start "" cmd /k "echo command 1 && ping -t localhost" start "" cmd /k "echo command 1 && ping -t localhost" start "" cmd /k "echo command 1 && ping -t localhost"
ich werde am Ende mit sechs Fenstern. Fünf von Ihnen ausgeführt werden kontinuierliche pings, dem sechsten, werden die ursprünglichen Fenster, lief Sie den Stapel, und jeder von Ihnen kann gestoppt werden individuell mit STRG+C.start "" cmd /k "echo command 1 && ping -t localhost"
fünf mal.for /F "tokens=1,2" %%a in (theDataFile.txt) do ( start "" cmd /k "arp -s %%a %%b && ping -l 408 -t %%a" )
beseitigt die Notwendigkeit, zu bauen, eine Reihe von intermediate batch-Dateien.start cmd.exe /K "arp -s 192.168.5.5 00-40-8C-D4-FB-BC && ping -l 408 -t 192.168.5.5"
in mehrere Zeilen?