Batchprogrammierung

Einen guten Tag allerseits.

Ich hoffe hier auf Hilfe und damit auf Leute, die ihr Wissen gerne weitergeben.

Hier nun die Ausgangssituation:

Rechner 1: Erstellt Daten per Dienst
Rechner 2: Sichert Daten auf Band

Ich möchte regelmäßig Daten von Rechner 1 an Rechner 2 zur Sicherung senden. Per Zeitplansteuerung (at.exe) habe ich 3 jobs laufen. Zuerst wird der Dienst angehalten, dann per xcopy kopiert und anschließend (nach 4 Stunden) der Dienst wieder gestartet.

Nun meine Fragen:

  1. Gibt es ein Protokoll zur Zeitplansteuerung?
  2. Wie kann ich die Abläufe der Batchdateien protokollieren (z.B. xcopy)? Mit welchen Befehlen wird der Kopiervorgang oder auch das Starten/Stoppen des Dienstes in eine andere Datei geschrieben?
  3. Ist es möglich, den Dienst erst dann wieder starten zu lassen, sobald der Kopiervorgang beendet ist? Momentan ist es ja fix auf Stunden festgesetzt. 100%-ig sicher ist dies aber nicht. Ist es machbar, dass der Dienst also automatisch nach Beenden des Kopiervorgangs startet?

Vielen Dank für das Lesen und das evtl. Beschäftigen mit den Fragen.
Dirk

Hallo einerseits,

  1. Gibt es ein Protokoll zur Zeitplansteuerung?

Was genau meinst du mit Protokoll? Wenn du Win2K oder XP hast, dann benutz doch lieber den Taskplaner, der ist wesentlich komfortabler und übersichtlicher als der AT-Befehl.

  1. Wie kann ich die Abläufe der Batchdateien protokollieren

Ganz einfach: Wenn du den Befehl selbst in eine Datei schreiben willst, dann kann du vor dem Befehl z.B. aufrufen:
echo xcopy Datei Ziel>>Logdatei.txt
„>>“ bedeutet hier, daß der Text an eine bestehende Datei angehängt wird, bei „>“ würde eine neue Datei mit dem entsprechenden Inhalt erstellt.
(Pfiffigerweise kannst du auch das machen: echo %date% %time% xcopy Datei Ziel>>Logdatei.txt)
Die Asgabe von xcopy kannst du natürlich auch in eine Datei leiten:
xcopy Start Ziel>>Logdatei.txt bzw. xcopy Start Ziel 1>>Logdatei.txt
Diese beiden Sachen bewirken, daß die Standard-Ausgabe von XCopy nicht in deiner Eingabeaufforderung erscheint sondern in die Datei geleitet wird.
xcopy Start Ziel 2>>Logdatei.txt bewirkt, daß die Fehlerausgabe von XCopy in die Datei geleitet wird.
Leider geht nicht: xcopy Start Ziel 1>>Logdatei.txt 2>>Logdatei.txt
Damit würdest du dann wie auf deinem Bildschirm sowohl die Standard- als auch die Fehlerausgabe in die Datei bekommen, nur an dieser Stelle wird versucht die Logdatei 2x zum Schreiben zu öffnen und das geht nunmal nicht.

  1. Ist es möglich, den Dienst erst dann wieder starten zu
    lassen, sobald der Kopiervorgang beendet ist?

Klar. Schreibe doch einfach alles in die Batch-Datei:
net stop MeinDienst
Xcopy …
net start MeinDienst

Also abschließend würde deine Datei vielleicht so aussehen:

set Logfile=c:\temp\Log.txt
set Dienstname=Wasweissich

echo %date% %time% net stop „%Dienstname%“>>"%Logfile%"
net stop „%Dienstname%“>>"%Logfile%"
echo %date% %time% xcopy Start Ziel>>"%Logfile%"
xcopy Start Ziel>>"%Logfile%"
echo %date% %time% net start „%Dienstname%“>>"%Logfile%"
net start „%Dienstname%“>>"%Logfile%"

echo turboPasqual: Sie nannten ihn Scripting-Gott :smile:

Danke, turbopascal, Du hast mir Deinen ausführlichen Antworten sehr gut weitergeholfen.