Tötung eines Prozesses in Batch-und reporting auf Erfolg
habe ich folgende batch-Datei beendet das Programm iTunes so, dass wenn ich eine Verbindung zu meinem iPod, es wird nicht synchronisiert werden. (Ich weiß, man kann dies in iTunes.)
@echo off
:kill
cls
taskkill /F /IM itunes.exe >nul
if %errorlevel%==1 {
echo iTunes not found.
} else {
echo iTunes is killed.
}
goto kill
Jedoch die >nul
reagiert nicht auf den Befehl; also es gibt nur die default-Befehl text. Also ja, was ich tun will:
Wenn iTunes nicht gefunden, wie der Befehl angezeigt werden soll
iTunes nicht gefunden
Wenn es gefunden wird, und beendet,
iTunes ist getötet
Helfen? der errorlevel ist nicht Arbeit, das scheinen die Schuld der nul
funktioniert nicht.
InformationsquelleAutor Deniz Zoeteman | 2009-12-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Funktioniert bei mir zumindest:
So
taskkill
ist Rückkehr eine korrekte exit-code. Die Umleitung seiner Ausgabe hat nichts mit diesem zu tun. Aber die Ebene Fehler für das scheitern ist 128. Sollten Sie wirklich die richtige Ausdrucksweise ist für die Prüfung auf Fehler.Scheint es auch, dass
taskkill
ist der Druck zustderr
Sie sehen also, dessen Ausgang noch, wenn nur umleitenstdout
. Sie können prüfen, umschreiben obigen code:Den
2>&1
leitet die standard-Fehlerausgabe in das weite nichts.if errorlevel 1
überprüfterrorlevel
wird mindestens 1 die arbeiten sollten an dieser Stelle:In der Regel die überprüfung
errorlevel
mitif %errorlevel%==
ist eine ganz schlechte Idee, es sei denn, Sie sind im Vergleich zu 0. Die Semantik für die exit-codes sind, dassanything
non-zero-Signale Versagen. Ihre Annahme, hier war einfach, dasstaskkill
zurückkehren würde1
auf Fehler.Ans-darf ich freundlich Fragen, warum Sie dies tun in einer endlos-Schleife?
taskkill
schon tötet alle Instanzenitunes.exe
. Und läufst du in eine Endlosschleife geraten, ohne irgendwelche Verzögerungen, so dass Ihre batch-Dateien wahrscheinlich verbraucht einen CPU-Kern, während es läuft.ETA: Übersehen edit: Warum die geschweiften Klammern? Blöcke in batch-Dateien sind delimieted durch Runde Klammern.
why on eart curly braces
gut, ich benutze Sie so lange, wie ich mit Ihnen gearbeitet. Ich weiß nicht; ich mag es einfach. Es sieht schöner aus, denke ich.Gut, wenn du mit Ihnen in batch-Dateien, dann erwarten, dass die Dinge schief gehen. Wenn Sie code schreiben, in einer Sprache, die Sie haben, um es in der Sprache der Grammatik, unabhängig davon, was sieht schöner aus oder nicht. Die geschweiften Klammern funktionieren nicht als block-Trennzeichen in batch.
ich dachte, Sie Taten. Zumindest arbeiteten Sie für die codes die ich verwendet habe. Ich arbeite mit batch-seit über 1 Jahr jetzt, und entwickelt mit geschweiften Klammern, über und über, und es funktioniert gut. Meine Kunden (aka youtubers ;)) sagen, es funktioniert gut für Sie.
obwohl, Dank für das teilen dieses. es funktioniert einwandfrei.
ach ja, und über die endlos-Schleife: ich bearbeitet die Sache so, dass bei
else
es sagt:else(goto :killed)
. In:killed
wir haben eine zusätzliche 2-mal taskkill, nur um sicher zu sein, und nach, dass es echo ein text, der dem Benutzer sagt, es soll eine beliebige Taste drücken, umexit
.InformationsquelleAutor Joey
alternative Lösung in vbscript, speichern Sie folgenden code als mykill.vbs
in der Befehlszeile
InformationsquelleAutor ghostdog74
Warum gehst du nicht mit der PowerShell?
InformationsquelleAutor Rosberg Linhares