Skript funktioniert nicht als geplante Aufgabe

Telefonkatze

Lt. Junior Grade
Registriert
Nov. 2009
Beiträge
438
Hallo,

ich habe eine Batchdatei, die mit rar.exe ein Verzeichnis in ein Archiv auf einem externen Laufwerk packt und bei erneutem Aufrufen auch aktualisiert.

Wenn ich diese Batchdatei über eine geplante Aufgabe ausführe, erstellt sie zwar das Archiv, wenn es nicht vorhanden ist, aber eine Aktualisierung funktioniert nicht. Die Batchdatei wird über den Taskplaner im Hintergrund ausgeführt, sodass ich auch keine Fehlermeldung sehe und somit schlecht die Ursache erkennen kann. Hat jemand eine Idee?
 
Magst du das Skript auch mal zeigen?
Wird der Task als SYSTEM ausgeführt oder mit nem lokalen User oder AD-User?

Und: Man kann auch Logs in Batch erstellen lassen, um z.B. Fehler zu protokollieren.
 
Ich habe keine Ahnung wie sowas exakt unter windows gehandhabt wird, aber:
Als Welcher nutzer wird das skript ausgefuehrt? Hat der Nutzer Zugriff auf ein Entpack Programm? Hat der Nutzer Schreibzuggriff auf das Laufwerk?
 
Er wird sie auch nie aktualisieren, da es die Datei bereits gibt und die Aufgabe damit somit schon erledigt worden war. Ob es nun aktuell ist oder nicht, ist in dem Fall erstmal irrelevant.
Entweder du passt du das Skript an und erstellst mehrere Versionen und lässt die älteste löschen oder du lässt bei jedem Durchlauf die alte Version vorher löschen
 
Naja, das wird ganz auf die Parameter von RAR ankommen. Ich nutze eher 7zip, aber im Normalfall gibt es unterschiedliche Parameter, um ein Archiv zu erstellen oder neue Dateien zum Archiv hinzuzufügen.
 
Das Skript kann ich besorgen, wahrscheinlich heute Abend.
Zuerst wollte ich die Aufgabe mit dem Standardbenutzer einplanen, habe aber eine Fehlermeldung bekommen, dass dieser nicht ausreichend Berechtigungen hätte. Das liegt vielleicht daran, dass dieser Nutzer ohne PW angemeldet wird. Ich habe dann einen anderen Benutzer genommen, der sich mit PW anmeldet. Damit ging es. Soweit ich weiß, hat dieser andere Nutzer mit PW keine Admin-Rechte.

Ich selbst benutze Win7 nicht, weshalb mir die Bedienung und die Eigenarten nicht geläufig sind.
 
Es gibt zumindest die unterschiedlichen Kommandos "a, f und u" bei rar: https://documentation.help/WinRAR/HELPCommands.htm
Wo der genaue Unterschied liegt, konnte ich da nicht direkt herauslesen., aber dazu findest du bestimmt auch Erklärungen.
 
Kannst du das script manuell mit dem Benutzer ausführen (in einem realistischen Szenario) und es funktioniert? Eventuell einen Schalter vergessen damit ggf. bereits vorhandene Dateien überschrieben werden dürfen?
 
Je nachdem was du mit 'externes Laufwerk' meinst:

Netzlaufwerke sind nicht gemappt, wenn du das so ausführst
du musst das zuerst nochmal mappen im Kontext vom Skript
 
Hier ist die Batch:

Code:
@echo off

echo zum Testen wird das Datum und die Zeit in eine Datei geschrieben.
echo Backup wurde gestartet >f:\batch\bu_zeit.txt
echo am date: %date% >>f:\batch\bu_zeit.txt
echo um time: %time% >>f:\batch\bu_zeit.txt
echo Benutzer:  %username% >>f:\batch\bu_zeit.txt


set datum= %Date%
set Pfad=t:\BackUp\
set Packer=start "Backup" /min /wait /belownormal f:\batch\rar.exe
set Packer=f:\batch\rar.exe


set Schalter2=a -r -m1 -ac -x@f:\batch\Backup_Ausschluss.txt -agYYYYMMDD -v4000000

rem a    add files to archive
rem -r    recursiv subdirectories
rem -m1    Kompressionslevel (1 schlecht ... 5 maximal)
rem -ac    clear archive attribute
rem -x@    Ausschlussliste
rem -ag    aktuelles Datum hinzufuegen
rem -v    maximale Volumegroesse


echo Erstelle BackUp am:   %datum%
echo.
echo Zielverzeichnis:        %Pfad%
echo.
echo ##############################################
echo.

%Packer% %schalter2% "%Pfad%Test___.rar" "@f:\batch\Backup.txt"

echo wurde beendet >>f:\batch\bu_zeit.txt
echo um time: %time% >>f:\batch\bu_zeit.txt

Das Problem kann nicht (alleine) an den Parametern für rar.exe liegen, denn wenn ich die Batch direkt über den Explorer oder in der Kommandozeile starte, funktioniert sie wie gewohnt. Das Problem tritt nur auf, wenn ich die batch über die Aufgabenplanung ausführen lasse.

Ich kenne es auch nur so, dass rar und 7z ein Archiv aktualisieren, wenn es schon vorhanden ist.
D.h., dass wenn ich ein Verzeichnis mit rar in ein Archiv packe, dann z.B. eine Datei dem Verzeichnis hinzufüge und rar noch mal mit den gleichen Parametern aufrufe, dann meldet rar, dass alles bis auf die eine Datei vorhanden ist und fügt nur die eine neue Datei hinzu.

EDIT, da sich hier was überschnitten hat:

Das externe Laufwerk ist ein angeschlossenes USB-Laufwerk.
Ergänzung ()

Update:
Wie ihr seht, speichere ich die Uhrzeit vor und nach dem Aufruf von rar.exe in einer Datei ab. So kann ich sehen, wie lange rar lief.
Außerdem habe ich testweise die Ausgabe von rar in eine Textdatei umgeleitet mit ">F:\batch\Ausgabe.log"
Wenn ich das Skript manuell aufrufe, erhalte ich die zu erwartende Ausgabe. Wenn ich das Skript über die Aufgabenplanung aufrufe, dann wird die Log-Datei nicht erstellt.
Die andere Logdatei (bu_zeit.txt) wird dagegen erstellt.

Beim Aufruf von rar.exe innerhalb des Skripts geht irgendwas grundlegend schief, sodass nicht mal eine Ausgabe in die Log-Datei umgeleitet wird.
 
Zuletzt bearbeitet:
Ist t: ein lokales Laufwerk oder ein gemappter Share?
In die Richtung hat ja @Rickmer auch schon gefragt.
Falls es ein Share ist und das Script nicht im gleichen Benutzerkontext wie dein User ausgeführt wird, muss der Share vorher noch mit net use gemappt werden.

Hat zwar nichts mit dem Problem zu tun, aber was macht Zeile 12? In Zeile 13 wird die Variable "Packer" gleich wieder überschrieben...
 
t: liegt auf einer angeschlossenen USB-Festplatte, also kein Netzwerklaufwerk.

Das Skript hatte ursprünglich die Zeile 13 nicht. Zeile 13 habe ich nur eingefügt, weil ich nicht sicher war, ob es daran lag und ich alle möglichen Fehlerquellen ausschalten wollte.


Wenn ich das Skript mit der Aufgabenplanung starte, wird kein Konsolenfenster geöffnet. Gibt es eine Möglichkeit, dass sich so ein Fenster öffnet, damit ich besser sehen kann, was passiert, wenn rar.exe aufgerufen wird?
 
Ich habe nun eine Lösung, die funktioniert, die ich aber nicht nachvollziehen kann.
Ich habe in der Aufgabenplanung "mit höchsten Berechtigungen", oder so ähnlich angehakt und damit funktioniert es.
Ich kann es deswegen nicht nachvollziehen, weil das Skript mit dem gleichen Benutzer funktioniert hat, wenn ich es nicht über die Aufgabenplanung, sondern direkt per Explorer oder aus der Konsole gestartet habe.
 
Zuletzt bearbeitet:
Zurück
Oben