cmaster
Goto Top

Batch-Script wird als Task nicht vollständig ausgeführt

Hallo,

ich habe folgendes Script. Wenn ich die bat-Datei ausführe, läuft diese vollständig durch (erst wird das Mail-Backup erstellt, anschließend das Data-Backup); folge dessen ist im Script ja auch kein Fehler.

Wenn ich dieses Script jetzt aber via Geplanten Task ausführen lasse, läuft dieses auch an (was ich in meiner log-Datei verfolgen kann), bricht aber mittendrin ab; und zwar, unmittelbar, nachdem das erst Backup vollständig und korrekt beendet wurde. Ich sehe also im log noch "Mails-Backup gestartet", und das wars dann, weiter nichts.

Wenn ich das log des ntbackup-Tools anschaue, meint dieser, das Backup sei vollständig und ohne Fehler beendet worden, genauso wie der Prüfvorgang, der nach dem Sichern durchgeführt wird. Jedoch kommt er nicht einmal mehr dazu, ins log "Mails-Backup beendet" rein zu schreiben.

Das ganze läuft unter Windows Home Server. Der Task wird als Administrator ausgeführt, hat somit also eig. alle Rechte.


back-to-topNeuere Code-Version, siehe unten
@echo off
set target=D:\shares\Backup\
set location_bks=C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\
set log=backup.log

echo.>>%log%

REM Zeit + Log
set datum=%date:~-4%.%date:~3,2%.%date:~0,2%
set zeit=%time:~0,2%:%time:~3,2%

echo %datum% %zeit% :: Backup-Prozess gestartet als %username%>>%log%

REM Mails

  REM ### BACKUP PROCESS ### Start ###
  echo Mails-Backup gestartet

  REM Zeit
  set datum=%date:~-4%.%date:~3,2%.%date:~0,2%
  set zeit=%time:~0,2%:%time:~3,2%

  echo %datum% %zeit% :: Mails-Backup gestartet>>%log%

  call ntbackup backup "@%location_bks%Mails.bks" /j "Mails" /f "%target%mails.bkf" /n "Mails-Sicherung" /d "Mails-Sicherung erstellt am %datum% um %zeit% durch %username%" /v:yes /r:no /l:s /m copy /rs:no /hc:off /snap:on  

  REM Zeit
  set datum=%date:~-4%.%date:~3,2%.%date:~0,2%
  set zeit=%time:~0,2%:%time:~3,2%

  echo %datum% %zeit% :: Mails-Backup beendet (mit %errorlevel%)>>%log%
  REM ### BACKUP PROCESS ### End ###



REM Data

  REM ### BACKUP PROCESS ### Start ###
  echo Data-Backup gestartet

  REM Zeit
  set datum=%date:~-4%.%date:~3,2%.%date:~0,2%
  set zeit=%time:~0,2%:%time:~3,2%

  echo %datum% %zeit% :: Data-Backup gestartet>>%log%

  call ntbackup backup "@%location_bks%Data.bks" /j "Data" /f "%target%data.bkf" /n "Data-Sicherung" /d "Data-Sicherung erstellt am %datum% um %zeit% durch %username%" /v:yes /r:no /l:s /m copy /rs:no /hc:off /snap:on  

  REM Zeit
  set datum=%date:~-4%.%date:~3,2%.%date:~0,2%
  set zeit=%time:~0,2%:%time:~3,2%

  echo %datum% %zeit% :: Data-Backup beendet (mit %errorlevel%)>>%log%
  REM ### BACKUP PROCESS ### End ###


REM Zeit + Log
set datum=%date:~-4%.%date:~3,2%.%date:~0,2%
set zeit=%time:~0,2%:%time:~3,2%

echo %datum% %zeit% :: Backup-Prozess beendet>>%log%


Woran könnte das liegen?

Vielen Dank

Gruß Stefan

Content-Key: 150364

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

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

Member: n.o.b.o.d.y
n.o.b.o.d.y Sep 05, 2010 at 08:35:51 (UTC)
Goto Top
Hallo,

führt es der gleiche Benutzer, also der Admin, aus wenn es als geplanter Task läuft?
Member: cMaster
cMaster Sep 05, 2010 at 08:59:51 (UTC)
Goto Top
Hallo,

ja, läuft ebenfalls über den Administrator.
Mitglied: 60730
60730 Sep 05, 2010, updated at Oct 18, 2012 at 16:43:22 (UTC)
Goto Top
moin,

01.
03. set location_bks=C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\


würde ich lieber so herum schreiben..

01. rem @echo off
03. set location_bks="C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\"

und da u.a
51. set zeit=%time:~0,2%:%time:~3,2%
vor
53. echo %datum% %zeit% :: Data-Backup beendet (mit %errorlevel%)>>%log% </b></i>
steht - ist klar, das %errorlevel% schon längst einen anderen Status geerbet hat, als du denkst.

51. echo %date:~-4%.%date:~3,2%.%date:~0,2% %time:~0,2%:%time:~3,2% :: Data-Backup beendet (mit %errorlevel%)>>%log%
wäre da eher mein Weg, wobei ich das nur kurz überflogen hab und eigentlich eher komplett anders schreiben würde.

Gruß
Member: cMaster
cMaster Sep 05, 2010 at 10:24:15 (UTC)
Goto Top
Hi,

hab den Quelltext jetzt mal noch ein bisschen abgeändert, funktioniert ab trotzdem nicht.

Und, die Anführungszeichen dürfen bei dem Pfad auf jeden Fall nicht mit hin, sonst findet er die Dateien nicht mehr...

Hab den Task immer von einem anderen System übers Netzwerk gestartet, und sofort als dieser scheinbar beendet war, habe ich mich am Server angemeldet, und da hab jetzt auch gesehen, dass die cmd.exe schon wieder beendet ist (und somit auch der Task), das ntbackup aber im Hintergrund noch läuft, und noch beim Erstellen des Backups ist.

Das würde ja heißen, das Batch-Script wird mit dem Start der ntbackup.exe abgebrochen !? Aber warum?

REM @echo off
set target=D:\shares\Backup\
set location_bks=C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\
set log=backup.log

echo.>>%log%

echo %date:~-4%.%date:~3,2%.%date:~0,2% %time:~0,2%:%time:~3,2% :: Backup-Prozess gestartet als %username%>>%log%

REM Mails
  REM ### BACKUP PROCESS ### Start ###
  echo Mails-Backup gestartet

  echo %date:~-4%.%date:~3,2%.%date:~0,2% %time:~0,2%:%time:~3,2% :: Mails-Backup gestartet>>%log%

  call ntbackup backup "@%location_bks%Mails.bks" /j "Mails" /f "%target%mails.bkf" /n "Mails-Sicherung" /d "Mails-Sicherung erstellt am %date% um %time% durch %username%" /v:yes /r:no /l:s /m copy /rs:no /hc:off /snap:on>>%log%  

  echo %date:~-4%.%date:~3,2%.%date:~0,2% %time:~0,2%:%time:~3,2% :: Mails-Backup beendet (mit %errorlevel%)>>%log%
  REM ### BACKUP PROCESS ### End ###



REM Data
  REM ### BACKUP PROCESS ### Start ###
  echo Data-Backup gestartet

  echo %date:~-4%.%date:~3,2%.%date:~0,2% %time:~0,2%:%time:~3,2% :: Data-Backup gestartet>>%log%

  ntbackup backup "@%location_bks%Data.bks" /j "Data" /f "%target%data.bkf" /n "Data-Sicherung" /d "Data-Sicherung erstellt am %date% um %time% durch %username%" /v:yes /r:no /l:s /m copy /rs:no /hc:off /snap:on>>%log%  

  echo %date:~-4%.%date:~3,2%.%date:~0,2% %time:~0,2%:%time:~3,2% :: Data-Backup beendet (mit %errorlevel%)>>%log%
  REM ### BACKUP PROCESS ### End ###


echo %date:~-4%.%date:~3,2%.%date:~0,2% %time:~0,2%:%time:~3,2% :: Backup-Prozess beendet>>%log%
Mitglied: 60730
60730 Sep 05, 2010 at 21:32:09 (UTC)
Goto Top
naabend,
Zitat von @cMaster:
Hi,

hab den Quelltext jetzt mal noch ein bisschen abgeändert, funktioniert ab trotzdem nicht.
naja ich hab auch nur grrob drüber gesehen und die in meinen Augen dicksten Brocken genannt...

Und, die Anführungszeichen dürfen bei dem Pfad auf jeden Fall nicht mit hin, sonst findet er die Dateien nicht mehr...
Quark mit Sosse - schau dir mal deine Zeile 16 bzw. 19 an - da sind ja auch welche - die da in meinen Augen nicht hingehören, wenn du per Parameter werkelst.

Wobei wir eigentlich beim eigentlichen Thema wären, warum machst du das und nutzt das nicht konsequent?
Hab den Task immer von einem anderen System übers Netzwerk gestartet, und sofort als dieser scheinbar beendet war, habe ich
mich am Server angemeldet, und da hab jetzt auch gesehen, dass die cmd.exe schon wieder beendet ist (und somit auch der Task), das
ntbackup aber im Hintergrund noch läuft, und noch beim Erstellen des Backups ist.

Das würde ja heißen, das Batch-Script wird mit dem Start der ntbackup.exe abgebrochen !? Aber warum?

Und warum das so ist - liegt an deiner Batch, die einmal ntbackup callt und einmal stupide startet face-wink!?!
Wieder Z 16 bzw. Z29
Aber schreib doch mal genau..
Du sicherst übers Netzwerk einen Pfad, der sich c:\dokumente und blabla nennt?
Psexec?

Gruß
Member: cMaster
cMaster Sep 05, 2010 at 23:26:26 (UTC)
Goto Top
Hallo,

Zitat von @60730:
naabend,
> Zitat von @cMaster:
> ----
> Hi,
>
> hab den Quelltext jetzt mal noch ein bisschen abgeändert, funktioniert ab trotzdem nicht.
naja ich hab auch nur grrob drüber gesehen und die in meinen Augen dicksten Brocken genannt...
>
> Und, die Anführungszeichen dürfen bei dem Pfad auf jeden Fall nicht mit hin,
> sonst findet er die Dateien nicht mehr...
Quark mit Sosse - schau dir mal deine Zeile 16 bzw. 19 an - da sind ja auch welche - die da
in meinen Augen nicht hingehören, wenn du per Parameter werkelst.

Wobei wir eigentlich beim eigentlichen Thema wären, warum machst du das und nutzt das nicht konsequent?
Irgendwie verstehe ich gerade nicht ganz, wenn ich oben, beim setzen des Ordners Anführungszeichen hinmache, würde der die ja mit in die Variable speichern, wenn ich dann einen Dateinamen dranhänge habe ich dann:
"C:\Dokumente und Einstellungen\...\"meineDatei.bks
so kann das ja nicht funktionieren...

Hier ein Beispiel, für ein ntbackup-Befehl, den ich mir vom ntbackup-Tool gerade eben erstellen lassen habe:
ntbackup.exe backup "@C:\Dokumente und Einstellungen\Anwender\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\ntbackup test task.bks" /n "test.bkf wurde erstellt durch 06.09.2010 um 01:04" /d "Satz am 06.09.2010 um 01:04 erstellt" /v:yes /r:no /rs:no /hc:off /m normal /j "ntbackup test task" /l:s /f "E:\test.bkf"

> Hab den Task immer von einem anderen System übers Netzwerk gestartet,
> und sofort als dieser scheinbar beendet war, habe ich
> mich am Server angemeldet, und da hab jetzt auch gesehen,
> dass die cmd.exe schon wieder beendet ist (und somit auch der Task), das
> ntbackup aber im Hintergrund noch läuft, und noch beim Erstellen des Backups ist.
>
> Das würde ja heißen, das Batch-Script wird mit dem Start der ntbackup.exe abgebrochen !? Aber warum?

Und warum das so ist - liegt an deiner Batch, die einmal ntbackup callt und einmal stupide startet face-wink!?!
Einmal call, und einmal nicht, weil ich da probiert habe, geht aber wenn ich beides mal call hinschreibe genauso wenig, als wenn ich beides mal kein call hinschreibe...

Wieder Z 16 bzw. Z29
Aber schreib doch mal genau..
Du sicherst übers Netzwerk einen Pfad, der sich c:\dokumente und blabla nennt?
Nein, bei C:\Dokumente... befindet sich die vom ntbackup erstellte Sicherungs-Definitions-Datei, in der sich das ntbackup abgespeichert hat, was er alles sichern soll. Dann habe ich obige bat auf den Server gespeichert, und dort per Task konfiguriert. Da der Task ja unter dem Administrator-Benutzerkonto ausgeführt wird, ist es, wenn ich angemeldet bin, und einen Task ausführe der selbe Effekt, als würde ich die bat direkt aufrufen, ich sehe das Fenster der cmd und der ntbackup.exe; und kann alles sichtbar auf dem Server mitverfolgen.

Aber der Task ist ja dazu da, um automatisch zur geplanten Zeit ausgeführt zu werden, und das auch, wenn der Rechner an ist, aber niemand angemeldet ist; was ja bei einem Server i. d. R. so ist. Um genau diese Gegebenheit zu haben, und dennoch den Task anstoßen zu können, muss ich von einem anderen Rechner im Netzwerk aus auf den Server auf dessen Geplante Tasks zugreifen, um den Geplanten Task am Server von diesem anderen Rechner aus dann anstoßen zu können. Ausgeführt wird der Task dann ja trotzdem auf dem Server!

Psexec?

Gruß

Viele Grüße Stefan
Member: cMaster
cMaster Sep 08, 2010 at 10:55:09 (UTC)
Goto Top
Also, ich habe mein Problem jetzt lösen können, nachdem ich mir das komplette Script jetzt vollständig als VBScript programmiert habe.

Viele Grüße Stefan
Member: LKaderavek
LKaderavek Mar 08, 2015 at 20:47:11 (UTC)
Goto Top
Hallo,

ich habe ein ähnliches Problem.
Ich möchte bei Windows XP beim Herunterfahren sichern.

Leider klappt das nicht mit "Skript beim Herunterfahren", da die Netzwerkverbindungen bereits getrennt sind und NTBackup nicht mehr funktioniert.

Meine Lösung funktioniert zum Teil aber über "Skript beim Abmelden".

Leider bricht das Backup aber nach ca. 10 Minuten ab und der Computer fährt runter.

Warum?
Hat jemand eine Idee?

Danke

LG

Lukas