Jump to content
Sign in to follow this  
Wurzelzwerg

del und xcopy funktionieren in per Task ausgeführter .bat nicht

Recommended Posts

Moin,

 

habe folgende Batch Datei, um regelmäßig per Task das Verzeichnis E:\FreigabeLaufwerk\_Temp zu löschen und anschließend eine Text-Datei dort wieder reinzukopieren.

 

@ECHO off


REM ### Variablendeklaration ###

REM # Zu löschendes Verzeichnis #

SET delpfad=E:\FreigabeLaufwerk\_Temp

REM # Pfad der Scriptdatei #
SET scriptpfad=E:\FreigabeLaufwerk\IT\Betrieb\Config\Del_L-_Temp

REM # Logdatei #
SET logdatei="%scriptpfad%\del-script_L-temp.log"
SET errorlogdatei="%scriptpfad%\del-script_L-temp_error.log"

REM # Hinweisdatei #
SET txtdatei="%scriptpfad%\Achtung! Bitte lesen! L”schung dieser Dateien.txt"

ECHO .
ECHO .
ECHO Dieses Script loescht alle Dateien im Verzeichnis %delpfad% und kopiert anschliessend die Datei %txtdatei%
ECHO .
ECHO .

REM ### Beginne Logdatei ###

ECHO %DATE% %TIME% >> %logdatei%
ECHO %DATE% %TIME% >> %errorlogdatei%

REM ### Löschen aller Dateien im Löschpfad ###

ECHO Loesche alle Dateien in %delpfad%
ECHO Loesche alle Dateien in %delpfad% >> %logdatei%
ECHO .
ECHO .

DEL /F /S /Q "%delpfad%\*.*"  >> %logdatei% 2>> %errorlogdatei%

ECHO Errorlevel %errorlevel% >> %logdatei%


REM ### Kopiere Hinweisdatei ###

ECHO Kopiere %txtdatei% nach %delpfad%
ECHO Kopiere %txtdatei% nach %delpfad% >> %logdatei%
ECHO .
ECHO .

xcopy %txtdatei% "%delpfad%\" /I /Y >> %logdatei% 2>> %errorlogdatei%

ECHO Errorlevel %errorlevel% >> %logdatei%

Funktioniert perfekt, solange ich die Batch Datei selbst - eingeloggt als DOMAIN\Administrator - ausführe.

 

Richte ich allerdings einen Task ein, der diese Batch-Datei ausführen soll, wird keine Datei gelöscht und auch die Textdatei nicht kopiert. Der im Task eingetragene Benutzer ist ebenfalls DOMAIN\Administrator.

Folgendes spuken die Logs aus:

 

[edit: Funktioniert auf Windows 2003 Server nicht per Task - auf XP gehts. Frage bleibt aber bestehen, weil die Batch-Datei auf 2003 laufen muss]

 

12.07.2007 14:36:17,61 
Loesche alle Dateien in E:\FreigabeLaufwerk\_Temp 
Errorlevel 1 
Kopiere "E:\FreigabeLaufwerk\IT\Betrieb\Config\Del_L-_Temp\Achtung! Bitte lesen! L”schung dieser Dateien.txt" nach E:\FreigabeLaufwerk\_Temp 
0 Datei(en) kopiert
Errorlevel 4 

12.07.2007 14:36:17,62 
Zugriff verweigert
Fehler beim Erstellen der Datei - Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist.

Verzeichnis kann nicht erstellt werden - E:\FreigabeLaufwerk\_Temp

Hierbei stammt "Zugriff verweigert" vom del Befehl, der Rest müsste xcopy sein.

 

Sysinternals File Monitor sagt:

14:17:07	xcopy.exe:3116	OPEN	E:\FreigabeLaufwerk\_Temp\	ACCESS DENIED	DOMAIN\Administrator	
14:17:07	xcopy.exe:3116	OPEN	E:\FreigabeLaufwerk\_Temp\	ACCESS DENIED	DOMAIN\Administrator	
14:17:07	xcopy.exe:3116	OPEN	E:\FreigabeLaufwerk\	ACCESS DENIED	DOMAIN\Administrator	

 

Der einzig halbwegs brauchbare Treffer in Google [MS KB] hat mich dazu gebracht, mal auf E:\FreigabeLaufwerk\_Temp\ "BATCH" Vollzugriff zu geben - gebracht hats leider nichts.

 

Jemand 'ne Idee?

Share this post


Link to post
Share on other sites

Hi,

 

Kann es sein das derweilen noch ein task läuft der das file in Benutzung hat?

ein alter Job der nicht abgebrochen wird oder auch ein Benutzer?

 

weil bei mir funktionierts.

 

sofern das das erwartete ergebniss ist:

und es ist in beiden Fällen das gleiche.

 

12.07.2007 16:12:09,78

Loesche alle Dateien in c:\tst\_Temp

Datei wurde gel”scht - c:\tst\_Temp\Achtung! Bitte lesen! L”schung dieser Dateien.txt

Errorlevel 0

Kopiere "c:\tst\IT\Achtung! Bitte lesen! L”schung dieser Dateien.txt" nach c:\tst\_Temp

C:\tst\IT\Achtung! Bitte lesen! L”schung dieser Dateien.txt

1 Datei(en) kopiert

Errorlevel 0

Share this post


Link to post
Share on other sites

Hallo,

 

ja, Dein Ergebnis entspricht dem erwarteten.

 

Ich gehe nicht davon aus, dass die Datei in Benutzung ist (zumal eine .TXT ja - meines Erachtens nach - wohl sowieso eher selten geblockt wird). Gerade weil es ja immer dann funktioniert, wenn ich die Batch-Datei selbst ausführe, aber dann nicht, wenn sie als Task läuft (hier auch über manuelles ausführen, an der Uhrzeit kanns also auch nicht liegen).

 

Auf welchem Betriebssystem hast Du das per Task getestet? Ich habe festgestellt, dass es auf XP wunderbar läuft. Nur auf Windows Server 2003 Standard Edition nicht, aber genau dieser ist unser Fileserver und dort soll es ausgeführt werden.

Share this post


Link to post
Share on other sites

Vermutlich ist das Laufwerk nicht gemappt.

 

Schreibe in die Batchdatei am Anfang:

 

net use e: \\server\wasweisich

 

und am Ende

 

net use e: /d

 

-Zahni

Share this post


Link to post
Share on other sites

Hallo zahni,

 

Laufwerk E: ist die Festplattenpartition. Habe es auch per gemappten Laufwerk O: (da E:\FreigabeLaufwerk\ unser Office Laufwerk O: ist) und auch direkt per UNC probiert, es bleibt allerdings bei dem Problem.

 

Zumal File Monitor auch diverse SUCCESS Zugriffe von xcopy.exe z.B. auf dem Pfad wo das Script selbst liegt (ebenfalls E:) anzeigt.

Share this post


Link to post
Share on other sites

Getestet auf nem XpPro

 

Hab jetzt gerade leider keine Möglichkeit das auf nem Server zu testen.

da fragt man sich doch: wo is der Unterschied für das Script?

Share this post


Link to post
Share on other sites

So, ich habe noch mal ein bißchen getestet. Prinzipiell funktioniert die Batch Datei auch per Task-Aufruf auf dem Windows Server 2003 - allerdings nicht in dem Verzeichnis E:\FreigabeLaufwerk\_Temp. Zur Erinnerung: Rufe ich genau die selbe Batch Datei direkt in der cmd auf, funktioniert alles.

 

Bisher war DOMAIN\Administrator (auch lt. effektiver Berechtigung) wie folgt berechtigt:

 

DOMAIN\Administrator --> ist Mitglied in

# Domänen-Admins --> ist Mitglied in

## LW-O_Temp_Vollzugriff <-- hat Vollzugriff auf E:\FreigabeLaufwerk\_Temp

 

CACLS Ausgabe von E:\FreigabeLaufwerk\_Temp:

E:\FreigabeLaufwerk\_Temp DOMAIN\LW-O_Temp_Aendern:(OI)(CI)(Beschränkter Zugriff:)
                                                DELETE
                                                READ_CONTROL
                                                SYNCHRONIZE
                                                FILE_GENERIC_READ
                                                FILE_GENERIC_WRITE
                                                FILE_GENERIC_EXECUTE
                                                FILE_READ_DATA
                                                FILE_WRITE_DATA
                                                FILE_APPEND_DATA
                                                FILE_READ_EA
                                                FILE_WRITE_EA
                                                FILE_EXECUTE
                                                FILE_DELETE_CHILD
                                                FILE_READ_ATTRIBUTES
                                                FILE_WRITE_ATTRIBUTES

                   DOMAIN\LW-O_Temp_Vollzugriff:(OI)(CI)F

 

Nun habe ich DOMAIN\Administrator direkt Vollzugriff auf E:\FreigabeLaufwerk\_Temp gegeben. Ergebnis: Der DEL Befehl funktioniert auch bei Aufruf, XCOPY aber nach wie vor nicht. :confused:

 

Wie kann das nun sein, dass per Task die - meines Erachtens nach obigen Schema korrekte - Berechtigung verweigert wird, per direktem Aufruf die Batch Befehle aber zugreifen dürfen? Sollte es etwa ein Bug sein? :suspect:

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...