
Ich möchte einen Weg finden, mit der Eingabeaufforderung ein Programm in, sagen wir, 60 Sekunden zu schließen. Ähnlich wie beim zeitgesteuerten Herunterfahren des Computers (shutdown /s /t) und dem Taskill.
Irgendwelche Ideen? Ist das möglich?
Antwort1
Wie kann ich ein Programm in, sagen wir, 60 Sekunden schließen?
Mit ping
oder können Sie timeout
eine Zeitverzögerung erzeugen.
timeout
ist in Windows XP nicht verfügbar.timeout
gibt Ihnen einen Countdown.
ping
Lösung
Um nach 60 Sekunden zu beenden, notepad
verwenden Sie den folgenden Befehl:
ping 127.0.0.1 -n 61 > nul && taskkill /im notepad.exe
Notiz:
- Sie benötigen 61 Pings, da zwischen den Pings eine Verzögerung von 1 Sekunde besteht
ping
.
Beispiel:
F:\test>time /t && ping 127.0.0.1 -n 61 > nul && taskkill /im notepad.exe && time /t
17:56
SUCCESS: Sent termination signal to the process "notepad.exe" with PID 8084.
17:57
Eine Verzögerung kann auch durch den PING-Befehl mit einer Loopback-Adresse erzeugt werden, wobei zwischen jedem aufeinanderfolgenden Ping eine Verzögerung von 1 Sekunde auftritt. In Tests verbraucht PING weniger Prozessorzeit als Sleep.exe oder Timeout.exe, wodurch andere Prozesse im Hintergrund ausgeführt werden können. Der PING-Befehl kann nur mit Strg-C unterbrochen werden. Quelle: Clay Calvert (Usenet 2001.)
zB für eine Verzögerung von 40 Sekunden:
PING -n 41 127.0.0.1>nul
QuelleAuszeit
timeout
Lösung
Um nach 60 Sekunden zu beenden, notepad
verwenden Sie den folgenden Befehl:
timeout /t 60 && taskkill /im notepad.exe
Anmerkungen:
timeout
ist unter Windows XP nicht verfügbar.timeout
ist schlecht implementiert. Wenn Sie ein „Timeout 1“ ausführen, wird bis zur „nächsten Sekunde“ gewartet, was in 0,1 Sekunden der Fall sein könnte. Versuchen Sie, „Timeout 1“ ein paar Mal auszuführen und beobachten Sie den Unterschied in der Verzögerung. Bei 5 Sekunden oder mehr ist es vielleicht keine große Sache, aber bei einer Verzögerung von 1 Sekunde funktioniert es schlecht.
Beispiel:
F:\test>time /t && timeout /t 60 && taskkill /im notepad.exe && time /t
18:07
Waiting for 0 seconds, press a key to continue ...
SUCCESS: Sent termination signal to the process "notepad.exe" with PID 5412.
18:08
Weitere Informationen
- Ein AZ-Index der Windows CMD-Befehlszeile- Ein hervorragendes Nachschlagewerk zu allem, was mit der Windows-Eingabeaufforderung zu tun hat.
- Auszeit- Verzögern Sie die Ausführung um einige Sekunden oder Minuten, zur Verwendung in einer Batchdatei.
- Klingeln- Testen Sie eine Netzwerkverbindung. Bei Erfolg gibt Ping die IP-Adresse zurück.
- Wie kann ich in der Windows-Eingabeaufforderung 5 Sekunden in den Ruhezustand versetzen? (oder DOS)
Antwort2
Versuchen Sie es mitAufgabenplanung.
- Konfigurieren Sie die Ereignisprotokollierung so, dass ein Ereignis ausgelöst wird, wenn das gewünschte Programm gestartet wird.
- Konfigurieren Sie eine geplante Aufgabe, die ausgeführt wird, wenn das bestimmte Ereignis aus Nr. 1 protokolliert wird. In der geplanten Aufgabe kann eine Verzögerung eingestellt werden (in Ihrem Fall 60 Sekunden) und beliebige Befehle/Skripte können gestartet werden.
Antwort3
Probieren Sie mein Beispiel aus:
choice /t 5 /d a /c ab /n >nul & taskkill /im URprocess.exe
Erklärung: „choice“ wartet 5 Sekunden und wird beendet, dann schließt Taskkill „URprocess“
Antwort4
Ich verwende scriptrunner.exe, das mit Windows 10 geliefert wird. Ich musste nach meinem suchen, es war nicht im Pfad. Dokumentation finden Sie unterhttps://ss64.com/nt/scriptrunner.html
Ich konvertiere oft eine Menge E-Books ins EPUB-Format, aber die Konvertierung bleibt oft auf halbem Weg hängen. Also habe ich einen Stapel mit dem folgenden Inhalt erstellt.
@echo off
for /F "delims=" %%a in (files.txt) do (
if not exist "%%a.epub" ScriptRunner.exe -appvscript "c:\Program Files (x86)\calibre2\ebook-convert.exe" "%%a" "%%a.epub" -appvscriptrunnerparameters -timeout=60
if exist "%%a.epub" del "%%a"
)
Files.txt enthält alle Dateien mit Pfaden, die konvertiert werden müssen. Ich verwende ebook-convert.exe von Calibre, um die Konvertierung durchzuführen. Das Argument -timeout=60 ist die Zeit in Sekunden (hier 60), nach der die Ausführung beendet wird. Wenn die Konvertierung früher fertig ist, wird die nächste Zeile ausgeführt.
Das alles funktioniert gut.