kugelschreiber
Goto Top

System kopiert Dateien in einen Ordner trotz Schreibschutz

Hallo Ihr Lieben,

wahrscheinlich nur ein kleines Problem.

Ich habe einen Windows Server 2003 R2 SP1und dort habe ich einen Ordner (Archiv), in dem pro Monat ca 2000 Dateien drin landen.
Da diese Dateien (XML) ziemlich klein sind, habe ich mir gedacht, ich verschiebe alle Dateien, die Älter sind als 6 Tage in einen temporären Ordner (Archiv7z_temp) und komprimiere anschließend den kompletten Ordner und speichere das erstellte Archiv (mit Datum und Zeit im Namen) in einen ArchivOrdner (Archiv7z). Danach lösche ich die Dateien aus dem Quellordner (Archiv7z_temp).
Da ich dies nicht immer und immer wieder händisch machen will, habe ich mir eine Bacth geschrieben, die auch so funktioniert, wie wie oben beschreiben soll. Da ich dort mit Sprungmarken arbeite, wollte ich nun mal testen, wie das Script reagiert, wenn etwas schief läuft. Dazu habe ich mir gedacht, dass ich den Zielordner, also da wo die ZIP Datei landen soll einfach mal SCHREIBGESCHÜTZ mache. Also rechte Maustaste drauf und Read Only gechecked.

Jedoch schreibt die Batch fleißig weiter in den Ordner als gäbe es kein Morgen mehr?

Woran liegt das? Oder besser gefragt, wie kann ich überprüfen, ob meine Batch nicht löscht, wenn das Archivieren fehl geschlagen ist?

Anbei die Batch

ECHO off

REM --- Verschieben der Dateien, die aelter sind, als 6 Tage inein Temporäres Verzeichnis namens Archive7z_temp

	DelAge32.exe E:\Archive\*.* 6 /move E:\Archive7z_temp

PAUSE

REM --- Pruefen, ob Erfolgreich ---

	IF errorlevel 0 GOTO :KOMPRIMIERUNG


REM --- Komprimierung START ---

	:KOMPRIMIERUNG
	7za u -tzip E:\Archive7z\%date:~10,4%%date:~7,2%%date:~4,2%-%time:~0,2%%time:~3,2%%time:~6,2% E:\Archive7z_temp

REM --- Pruefen, ob Erfolgreich ---

	IF errorlevel 0 GOTO :LOESCHEN

REM -- Loeschen START ---

	:LOESCHEN
	del E:\Archive7Z_temp /s /F /Q

Danke für Eure Hilfe

Gruß Kuli

Content-ID: 143761

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

Ausgedruckt am: 24.11.2024 um 20:11 Uhr

bastla
bastla 28.05.2010 um 15:43:37 Uhr
Goto Top
Hallo kugelschreiber!

Unabhängig vom Phänomen "Schreiben in einen schreibgeschützten Ordner" schert sich Dein Batch überhaupt nicht um das Ergebnis der Komprimierung ...

Die Abfrage
IF errorlevel 0 GOTO :LOESCHEN
alleine würde schon immer zum Label ":LOESCHEN" springen, da diese Schreibweise bedeutet: Wenn der Errorlevel 0 oder größer als 0 ist, springe ...

Darüber hinaus würde auch ohne den Sprung als nächste auszuführende Zeile der Löschbefehl in Zeile 26 erreicht.

Versuch es daher besser so:
7za u -tzip E:\Archive7z\%date:~10,4%%date:~7,2%%date:~4,2%-%time:~0,2%%time:~3,2%%time:~6,2% E:\Archive7z_temp && del E:\Archive7Z_temp /s /F /Q
Falls Du dennoch mit einem "if" arbeiten wolltest, dann
if not errorlevel 1 goto :LOESCHEN
echo Fehler beim Komprimieren!
goto :eof

:LOESCHEN
Grüße
bastla

P.S.: Für die Zeile 11 gilt natürlich die selbe Überlegung ...
kugelschreiber
kugelschreiber 31.05.2010 um 09:46:42 Uhr
Goto Top
Hallo Bastla,

danke für die Hilfe ich habe es jetzt umgeschrieben und noch zwei Eventlogs geschrieben.
Kannst Du mal schauen, ob dies so richtig ist? Also beim Testen funktioniert es und die Eventlogs werden auch geschrieben. Jedoch weiß ich nicht, ob die Abbruchkriterien richtig geschrieben sind.

eventcreate /t Information /ID 1 /d "Dateien werden nun komprimiert"  

IF NOT errorlevel 1 GOTO :KOPIEREN
ECHO FEHLER BEIM EVENT LOG
goto :eof

:KOPIEREN

DelAge32.exe E:\Archive\*.* 6 /move E:\Archive7z_temp

IF NOT errorlevel 1 GOTO :KOMPRIMIERUNG
ECHO FEHLER BEIM KOPIEREN
goto :eof

:KOMPRIMIERUNG
7za u -tzip E:\Archive7z\%date:~10,4%%date:~7,2%%date:~4,2% E:\Archive7z_temp\*.*

IF NOT errorlevel 1 GOTO :LOESCHEN
ECHO FEHLER BEIM KOMPRIMIEREN
goto :eof

:LOESCHEN
	
del E:\Archive7Z_temp /s /F /Q
rmdir E:\Archive7Z_temp

IF NOT errorlevel 1 GOTO :EVENTLOG
ECHO FEHLER BEIM LOESCHEN
goto :eof

:EVENTLOG

eventcreate /t Information /ID 1 /d "Dateien wurden erfolgreich komprimiert"  

Dank für Deine Mühe Gruß Ronny
bastla
bastla 31.05.2010 um 10:29:04 Uhr
Goto Top
Hallo Ronny!

Sieht ok aus, allerdings ist das Löschen der Dateien in Zeile 24 nicht nötig, wenn Du ohnehin den gesamten Ordner in Zeile 25 entfernst - das ließe sich zu
rd /s /q E:\Archive7Z_temp
zusammenfassen.

Grüße
bastla
kugelschreiber
kugelschreiber 31.05.2010 um 11:06:01 Uhr
Goto Top
Danke bastla!

Ich ändere das noch (denn das macht Sinn) und stelle dann den Request/Thread auf gelöst.

Ihr seid die Besten!