Batchscript lässt sich nicht mit der Aufgaben Planung ausführen
Hallo ich fange erstmal mit den Rahmenbedingungen an
Server:
Windows Server 2012 R2 als HyperV VM
15 GB RAM
6 Cores
MS SQL Server
In einer Domäne
Ziel
Der SQL Server erzeugt stündlich Backups,
diese, jedenfalls konnte ich es nicht anders einstellen werden auf der Lokalen Platte gespeichert
Hier können Sie aber nicht liegen bleiben da sonst der Lokale Speicher nach 3 Tagen voll ist.
Also habe ich mir ein Netzlaufwerk eingerichtet
W:\ welches auf eine Freigabe zeigt in der die Backups abgelegt werden können.
nun habe ich mir ein BATCH Script geschrieben welches die Dateien erst Verschiebt und im Anschluss die ältesten 20 Backups löscht.
Wenn ich das Script per Hand Ausführe Funktioniert das Fehlerfrei. Starte ich das Sxript aber über die Aufgaben Planung passiert einfach nix.
ich sehe zwar das im Taskmanager das Script gestartet wird, aber es passiert einfach nichts .... vermutlich mache ich einen ganz einfachen Fehler
aber ich weis einfach nicht welchen
hier erstmal das Script
@echo off & setlocal
set "Ordner=W:\Backup"
set "Logfile=C:\Datenbank Backups\database_move_log.log"
set Anzahl=20
@echo [%date% %time%] - Starte das Verschieben von Backups >"%Logfile%"
@echo [%date% %time%] - Starte das Verschieben von Backups
move "C:\Datenbank Backups\BeEvent\*.bak" "W:\Backup" >"%Logfile%"
@echo [%date% %time%] - Beginne das Löschen alter Backups >"%Logfile%"
@echo [%date% %time%] - Beginne das Löschen alter Backups
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /a-d /o-d "%Ordner%"') do del "%Ordner%\%%i"
@echo [%date% %time%] - %Ordner% >"%Logfile%"
@echo [%date% %time%] - %Ordner%
die Aufgabenplanung sieht wie folgt aus ...
Allgemein:
Unabhängig von der Benutzeranmeldung ausführen
Mit Höchsten Privilegien ausführen
Benutzer Administrator
Trigger:
[X] - Täglich um 2 Uhr
Aktion:
[X] - Programmstart | Pfad zum Script
Bedingung:
- Keine
Einstellungen:
[X] - Ausführen der Aufgabe bei bedarf zulassen
[X] - Aufgabe so schnell wie möglichich nach einem verpassten start ausführen
[X] - Falls Aufgabe scheitert, neustart alle 30 min
[X] - neustartversuch bis maximal 3 x
[X] - Aufgabe beenden wenn ausführung länger als 4 Stunden Dauert
[X] - Beenden der aktiven Aufgabe erzwingen, falls sie auf Aufforderung nicht beendet wird
als Rückgabe bekomme ich nur
Informationen 21.10.2014 14:53:33 102 Aufgabe abgeschlossen (2) b5584a54-d305-4d5b-b939-2130dfa75055
aber passiert ist absolut nix ...
jemand eine Idee was ich Falsch mache ?
Hilfe wäre echt klassen,
vielen dank im Vorraus
Server:
Windows Server 2012 R2 als HyperV VM
15 GB RAM
6 Cores
MS SQL Server
In einer Domäne
Ziel
Der SQL Server erzeugt stündlich Backups,
diese, jedenfalls konnte ich es nicht anders einstellen werden auf der Lokalen Platte gespeichert
Hier können Sie aber nicht liegen bleiben da sonst der Lokale Speicher nach 3 Tagen voll ist.
Also habe ich mir ein Netzlaufwerk eingerichtet
W:\ welches auf eine Freigabe zeigt in der die Backups abgelegt werden können.
nun habe ich mir ein BATCH Script geschrieben welches die Dateien erst Verschiebt und im Anschluss die ältesten 20 Backups löscht.
Wenn ich das Script per Hand Ausführe Funktioniert das Fehlerfrei. Starte ich das Sxript aber über die Aufgaben Planung passiert einfach nix.
ich sehe zwar das im Taskmanager das Script gestartet wird, aber es passiert einfach nichts .... vermutlich mache ich einen ganz einfachen Fehler
aber ich weis einfach nicht welchen
hier erstmal das Script
@echo off & setlocal
set "Ordner=W:\Backup"
set "Logfile=C:\Datenbank Backups\database_move_log.log"
set Anzahl=20
@echo [%date% %time%] - Starte das Verschieben von Backups >"%Logfile%"
@echo [%date% %time%] - Starte das Verschieben von Backups
move "C:\Datenbank Backups\BeEvent\*.bak" "W:\Backup" >"%Logfile%"
@echo [%date% %time%] - Beginne das Löschen alter Backups >"%Logfile%"
@echo [%date% %time%] - Beginne das Löschen alter Backups
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /a-d /o-d "%Ordner%"') do del "%Ordner%\%%i"
@echo [%date% %time%] - %Ordner% >"%Logfile%"
@echo [%date% %time%] - %Ordner%
die Aufgabenplanung sieht wie folgt aus ...
Allgemein:
Unabhängig von der Benutzeranmeldung ausführen
Mit Höchsten Privilegien ausführen
Benutzer Administrator
Trigger:
[X] - Täglich um 2 Uhr
Aktion:
[X] - Programmstart | Pfad zum Script
Bedingung:
- Keine
Einstellungen:
[X] - Ausführen der Aufgabe bei bedarf zulassen
[X] - Aufgabe so schnell wie möglichich nach einem verpassten start ausführen
[X] - Falls Aufgabe scheitert, neustart alle 30 min
[X] - neustartversuch bis maximal 3 x
[X] - Aufgabe beenden wenn ausführung länger als 4 Stunden Dauert
[X] - Beenden der aktiven Aufgabe erzwingen, falls sie auf Aufforderung nicht beendet wird
als Rückgabe bekomme ich nur
Informationen 21.10.2014 14:53:33 102 Aufgabe abgeschlossen (2) b5584a54-d305-4d5b-b939-2130dfa75055
aber passiert ist absolut nix ...
jemand eine Idee was ich Falsch mache ?
Hilfe wäre echt klassen,
vielen dank im Vorraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 252644
Url: https://administrator.de/contentid/252644
Ausgedruckt am: 25.11.2024 um 17:11 Uhr
18 Kommentare
Neuester Kommentar
Es wird nur eine Kleinigkeit sein.
Nimm bitte einen neuen Task, der auf die selbe Weise (selbes Konto zum Ausführen, selber Trigger) folgende test.bat ausführt:
Und schau dann, ob unter w: ein Testordner erstellt wurde und was in c:\test\Testtasklog steht.
Nimm bitte einen neuen Task, der auf die selbe Weise (selbes Konto zum Ausführen, selber Trigger) folgende test.bat ausführt:
md c:\test
net use w: \\Server\98_Datenbank_Backups$\ >c:\test\Testtasklog.txt
md w:\Testordner >>c:\test\Testtasklog.txt
Gerne.
Noch als Zusatz zu
Noch als Zusatz zu
wenn in einem Script ein netzlaufwerk verwendet werden soll muss dieses auch im script gemappt werden
Das liegt daran, das Netzlaufwerke nicht systemweit, sondern eben benutzergebunden erstellt werden. Hinzu kommt: Lässt man einen Task mit der Option "mit höchsten Privilegien ausführen" ("elevated") laufen, kann es sogar der selbe Benutzer sein, der gerade angemeldet ist UND ein Netzlaufwerk w: hat - es könnte in dem Task nicht verwendet werden, ohne es separat erneut zu mappen. Grund wäre dann die UAC, die das Weiterreichen von Netzlaufwerken zwischen Konto A "normal" und Konto A "elevated" unterbindet.
Hallo MultiStorm!
Zur Abrundung: Da Du ja sinnvoller Weise eine Variable (%Ordner%) verwendest, würde ich diese auch konsequent nutzen (also auch in der "move"-Zeile), womit der Laufwerksbuchstabe ohnehin nur genau einmal benötigt würde - da kannst Du aber auch gleich ganz darauf verzichten:
Grüße
bastla
Zur Abrundung: Da Du ja sinnvoller Weise eine Variable (%Ordner%) verwendest, würde ich diese auch konsequent nutzen (also auch in der "move"-Zeile), womit der Laufwerksbuchstabe ohnehin nur genau einmal benötigt würde - da kannst Du aber auch gleich ganz darauf verzichten:
set "Ordner=\\Server\98_Datenbank_Backups$\Backup"
bastla