franziska2
Goto Top

AT Befehl per Batch wiederfinden

Guten Morgen,
nachdem ich schon viel aus den Beiträgen gelernt habe, möchte ich mich erstmal bedanken bei allen, die ihr Wissen so freimütig zur Verfügung stellen.
Nun habe ich mich angemeldet, weil ich selbst eine Frage habe.
Ich lege für den Backup geplante Tasks über eine Batchdatei mit dem AT-Befehl an. Wenn ich neue Einstellungen für den Backup haben will, muss ich die alten AT-Befehle löschen. Dabei möchte ich aber nur die löschen, die ich selbst erstellt habe.
Ich müsste also schon während der Erstellung mitschreiben, welche Befehle entstanden sind, und die Liste später wieder abarbeiten.

Meine Batchdatei sieht bisher z.B. so aus:

at /delete /yes

at 08:30 /every:Mi c:\dvu-trv\2.1\pro_backup.bat dvu-trv d:\backup\dvutrv\online f o
at 09:30 /every:Mi c:\dvu-trv\2.1\pro_backup.bat dvu-trv d:\backup\dvutrv\online i o
at 10:30 /every:Mi c:\dvu-trv\2.1\pro_backup.bat dvu-trv d:\backup\dvutrv\online i o

Vielen Dank für Eure Tipps.
Franziska

Content-Key: 69627

Url: https://administrator.de/contentid/69627

Printed on: April 23, 2024 at 18:04 o'clock

Member: jato11
jato11 Sep 27, 2007 at 07:25:42 (UTC)
Goto Top
Hallo Franziska,
wenn ich Dich richtig verstanden habe, erstellen mehrere Leute Tasks.

In Deiner Batch kannst Du hinter Delete den Auftrag angeben, der glöscht werden soll.
Das ist aber nicht sehr komfortabel.

Ich würde für diese Sicherung "Personal Backup" nehmen. Mit einen Mausklick kannst
Du Deine Sicherung geziehlt erstellen und löschen. Und das Backup wird auch schön
protokolliert.
http://www.ieap.uni-kiel.de/surface/ag-berndt/

Viele Grüße
Torsten
Member: franziska2
franziska2 Sep 27, 2007 at 10:12:20 (UTC)
Goto Top
Sorry, dass ich mich jetzt erst melde.
Leider muss ich mit Bordmitteln arbeiten. Das Backup-Programm wird durch die Batchdatei aufgerufen und diese soll halt mehrmals pro Tag gestartet werden können. Ich frage die Zeiten mit einem Programm ab und setze sie in AT-Befehle um.
Gruß
Franziska
Member: miniversum
miniversum Sep 27, 2007 at 16:06:27 (UTC)
Goto Top
Du kannst doch die Kennung die Bei der erstellung ausgegeben wird mit einer For schleife abfangen und in eine Datei schreiben. Z.B. so:
FOR /F "tokens=6 delims= " %%i in ('at 08:30 /every:Mi c:\dvu-trv\2.1\pro_backup.bat dvu-trv d:\backup\dvutrv\online f o') do echo %%i>>alteKennung.txt

Bei einem Update liest du dann diese Datei wieder aus und fertig:
FOR /F "delims=" %%i in ('type alteKennung.txt') do at %%i /delete /yes

Ist aber ungetestet.

miniversum
Member: Biber
Biber Sep 27, 2007 at 17:07:58 (UTC)
Goto Top
Moin franziska2,

das Problem würde ich eher pragmatisch angehen, da M$ bei den AT-Jobs nicht so viele Infos wirklich mitschreibt....
"Name", "Owner" und "Description" werden
a) bei AT-Jobs-Erzeugen nicht gefüllt und sind
b) nach dem Erzeugen "not writeable"...
Eine vorbildliche Programmiertechnik, wie wir sie aus Redmond und Neu-Wülferode gewohnt sind.

Beispiel:
>at 5:8  "blafasel"  
Neuer Auftrag hinzugefügt. Kennung = 1
>at
Statuskenn. Tag                     Zeit          Befehlszeile
---------------------------------------------------------------------------
        1   Morgen                  05:08         blafasel
Auch die Überprüfung mit etwas moderneren Mitteln weckt nicht wirklich Hoffnung:
>wmic job list brief
Command   JobId  Name  Owner  Priority
blafasel  1

>wmic job list full

Command=blafasel
DaysOfMonth=
DaysOfWeek=
Description=
ElapsedTime=
InstallDate=
InteractWithDesktop=FALSE
JobId=1
JobStatus=Success
Name=
Notify=
Owner=
Priority=
RunRepeatedly=FALSE
StartTime=********050800.000000+120
Status=
TimeSubmitted=
UntilTime=

...wie zu sehen ist, sind die theoretisch "sichtbaren" Attribute (Command, JobId, Name, Owner, Priority) nicht für Deine Zwecke, für die Frage "Ist der Job von mir gestartet?" brauchbar.

Deshalb als mein Tipp: Pragmatisch rangehen.
  • Du startest deinen Batch wie gehabt
  • und gibst diesem Batch aber noch einen Parameter mehr mit (der im Batch ja auch ignoriert werden kann)
  • und dieser Parameter kann wiedergefunden werden.

Bsp:
>at 08:30 /every:Mi c:\dvu-trv\2.1\pro_backup.bat dvu-trv d:\backup\dvutrv [franziska2_Okt07]
...
>At
Statuskenn. Tag                     Zeit          Befehlszeile
-------------------------------------------------------------------------------
        1   Morgen                  05:08         blafasel
        2   Jeden Mi                08:30         c:\dvu-trv\2.1\pro_backup.bat dvu-trv d:\backup\dvutrv [franziska2_Okt07]

Wiederfinden und Löschen ist dann Spielerei:
>at |find "[franziska2_Okt07]"  
        2   Jeden Mi                08:30         c:\dvu-trv\2.1\pro_backup.bat dvu-trv d:\backup\dvutrv [franziska2_Okt07]

>for /f %i in ('at^|find "[franziska2_Okt07]" ') do @echo AT %i /del  
AT 2 /del

Grüße
Biber
Member: franziska2
franziska2 Sep 28, 2007 at 05:44:27 (UTC)
Goto Top
Eure Vorschläge klingen super.
Leider kann ich heute nicht an der Sache arbeiten. Ich melde mich, wenn ich die Sache für mich umgesetzt habe.
Vielen Dank bis dahin.
Franziska
Member: franziska2
franziska2 Oct 22, 2007 at 07:55:14 (UTC)
Goto Top
Nach einigen Wochen im anderen Projekt habe ich nun die "pragmatische" Variante verwendet.
Auch weil auf diese Weise nicht noch eine Datei entsteht, auf die man aufpassen muss.
Funktioniert wunderbar für mich.
Vielen Dank und viele Grüße
Franziska
Member: jato11
jato11 Oct 22, 2007 at 08:33:35 (UTC)
Goto Top
Schreib uns doch mal, wie Deine Lösung aussieht.
Vielleicht können das auch Andere verwenden.

Viele Grüße
Torsten
Member: franziska2
franziska2 Oct 22, 2007 at 08:44:22 (UTC)
Goto Top
Meine Batchdatei mit den AT-Befehlen, die aus einem Progress-Programm heraus erstellt wird, sieht so aus:

for /f %%i in ('at^|find "ATBefehlDVU-TrV" ') do AT %%i /del /yes            
at  09:50  /every:Mo  D:\dvu-trv\backup.bat  dvu-trv  d:\backup\online f  o  ATBefehlDVU-TrV
at  09:54  /every:Mo  D:\dvu-trv\backup.bat  dvu-trv  d:\backup\online i  o  ATBefehlDVU-TrV
Dem eigentlichen Aufruf des Backupprogramms wird also außer den notwendigen Parametern noch ein weiterer mitgegeben "ATBefehlDVU-TrV".

Die for-Schleife in der ersten Zeile, findet dann genau diese Befehle wieder und setzt entsprechend AT mit /del ab.

Der Vorteil für mich ist, dass keine Datei (wie in miniversums Lösung) geschrieben wird, die die erstellten Befehle enthält. Denn diese könnte in unserer Umgebung aus Versehen gelöscht werden.
Mit Hilfe des "überflüssigen" Parameters kann man die richtigen AT-Befehle immer wiedererkennen.
Viele Grüße
Franziska
Member: Biber
Biber Oct 22, 2007 at 10:15:36 (UTC)
Goto Top
Moin Franziska,

danke Dir für die Rückmeldung und das Posten der stabilen "production enviroment"-Lösung.

Ich denke, damit kann auch der eine oder die andere eigene Anforderungen umsetzen.

Den Beitrag schliesse ich jetzt guten Gewissens.

Schönen Tag Dir
Biber