Windows ähnlich * nix "at" -Befehl

561
Rafael Almeida

* nix hat den Befehl "at", mit dem ein Programm zu einem bestimmten Zeitpunkt ausgeführt werden kann. So was:

echo "SOME_COMMAND" | at 00:00 

Windows verfügt auch über den Befehl "at", mit dem eine einmalig geplante Task erstellt wird, die vom Benutzer SYSTEM im Hintergrund ausgeführt wird. "schedtasks" ist vollständiger, aber auch schmerzhaft zu verwenden (vor allem, da für jede Aufgabe ein eindeutiger Name erforderlich ist. Die Idee, einen Stapel zu erstellen, um einen einmaligen Task * nix-Stil zu erstellen, um das "at" von * nix zu imitieren. wird irgendwie unpraktisch).

Gibt es also ein Hilfsprogramm für Windows, das * nix 'at' auf eine einfache, unkomplizierte Weise ausführt?

UPDATE: Ich werde jetzt etwas genauer sein =). Ich versuche, meinen Monitor zu einem bestimmten Zeitpunkt auszuschalten, und ich benutze ein Befehlszeilenprogramm namens nircmd, damit ich einfach "nircmd monitor off" eingeben kann, um die Aufgabe auszuführen. Wenn ich Linux auf diesem Computer verwendete, musste ich nur noch etwas tun

echo "nircmd monitor off" | at XX:YY 

oder erstellen Sie ein "Makro". In Windows habe ich jedoch nur die geplanten Aufgaben. Dies ist eine ziemlich bürokratische Art, eine einmalige Aufgabe zu erstellen, da "at" nicht wirklich funktioniert (siehe meine ähnliche Frage Windows Task Scheduler und mögliche Berechtigungsprobleme ) und "Zeitpläne". erfordert den gesamten oben genannten eindeutigen Namen.

Als Programmierer sollte es leicht genug sein, ein solches Programm zu erstellen, das das "at" von Unix nachahmt. Aber ich wollte sicherstellen, dass ich das Rad nicht zuerst neu erfand.

2
Nicht wirklich. Wenn Sie Einfachheit wünschen, bleiben Sie bei "at". Wenn Sie Komplexität wünschen, stecken Sie mit `schedtasks 'fest. Es ist unglücklich, aber das ist der Fall. Es gibt möglicherweise ein Tool von Drittanbietern, um es einfacher zu machen, oder Sie schreiben einfach ein Batch-Skript, um es zu tun. nhinkle vor 13 Jahren 0
Ich denke, ich hätte es vorher klarer machen sollen: Ich habe keine Hoffnung, ein solches Tool in Windows selbst zu finden. Was ich wirklich suche, ist ein Tool von Drittanbietern. Rafael Almeida vor 13 Jahren 0
Nachdem Sie Ihr Update gelesen haben, werden Sie wahrscheinlich zu der gleichen Schlussfolgerung wie ich kommen und schreiben Ihren eigenen einfachen Scheduler. Es ist ziemlich einfach, ein Programm in Ihrer bevorzugten Sprache zu schreiben, das im Hintergrund ausgeführt wird und gelegentlich prüft, ob es X o ist 'Clock noch und wenn ja, um Task Y auszuführen. Richard Lucas vor 13 Jahren 0

5 Antworten auf die Frage

3
Rafael Almeida

So ist es mir gelungen, das Problem zu lösen. Ich habe eine .bat-Datei mit dem Namen killscreenat.bat erstellt und in / Windows / system32 abgelegt (aber Sie können sie natürlich irgendwo ablegen - oder irgendwo in Ihrem PFAD, für diese Angelegenheit). Das Skript ist einfach:

schtasks.exe /create /SC ONCE /TN poweroffmonitor /TR "nircmd monitor off" /ST %1 /F 

Und die Verwendung ist einfach:

killscreenat HH:MM 

Der Schlüssel war die (stark un / falsch dokumentierte) / F-Option. Während dies in Technets Dokument (oder einem anderen Ort, den ich gelesen habe) nicht so aussagt, zwingt es geplante Aufgaben, die erstellte Aufgabe zu überschreiben, falls sie bereits existiert.

Es handelt sich nicht um eine globale Lösung - das heißt, Sie können nicht einfach einen Befehl an sie weiterleiten, aber wenn Ihre "Aufgabe" so häufig ist wie meine, ist der Prozess einfach genug.

Vielen Dank an alle für die Antworten, sie waren wirklich hilfreich bei der Suche nach der endgültigen Lösung!

2
Dave

Haben Sie CygWin als Bash-Shell in Windows ausprobiert ?

Nur heruntergeladen, und obwohl es Windows-Befehle nicht überschreibt (also kein "at" von Unix), ist es trotzdem eine großartige Sache, installiert zu haben. Vielen Dank! Rafael Almeida vor 13 Jahren 1
1
Col

Es gibt verschiedene Flags im Befehl at in Windows, mit denen Sie sich wiederholende und interaktive Aufgaben einrichten können. Machen Sie einfach eine vollständige Liste mit --help. Für mich sieht es so aus, als ob Sie nach einer Kombination von / every: und / interactive suchen, aber ich bin nicht sicher, was genau Sie erreichen wollen.

Die Option / Interaktiv ist in Windows 7 aufgrund eines Sicherheitsupgrades (bzw. eines Downgrades aufgrund von Sicherheitsproblemen) deaktiviert. tovare vor 13 Jahren 0
1
Richard Lucas

Geplante Tasks auf Windows-Desktop-Computern (nicht Server-Editionen, diese scheinen ok zu sein) sind meiner Erfahrung nach absolut unzuverlässig und funktionieren immer noch nicht unter Windows 7. Sie werden feststellen, dass Sie Tasks erstellen, die für eine Weile funktionieren, und dann plötzlich nicht mehr funktionieren. Es gibt keinen Grund, den Sie bestimmen können.

Wenn Sie versuchen, es unter Windows Vista / Windows 7 zu verwenden, werden Sie wahrscheinlich auf irgendeine Art von Berechtigungsproblemen mit AT stoßen, da Sie eine erhöhte Eingabeaufforderung ausführen müssen, um sogar auf den Befehl zugreifen zu können.

Was möchten Sie erreichen? Möglicherweise können Sie Ihren eigenen Scheduler rollen oder stattdessen ein anderes Tool von Drittanbietern verwenden.

Siehe Update oben, ich habe einige Dinge geklärt. Rafael Almeida vor 13 Jahren 0
1
kokbira

Nun, ich benutze diese dumme Methode:

: label1
wenn "% time%" GTR "15: 00: 00,00" do (
setzen Sie Ihre Befehle hier ein, gehen Sie zu
label2
).
goto label1
: label2

Scheint eine "hässliche" Problemumgehung für mich zu sein, sollte aber funktionieren, wenn alles andere fehlschlägt =) Rafael Almeida vor 13 Jahren 1