swenni2k
Goto Top

Fehler Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendert wird, was kann ich tun?

Hallo zusammen,

ich habe mir ein Batch gebaut, welches soweit funktioniert jedoch meldet es "Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird". Die geschiet seitdem ich versuche alle Aktionen in ein Logfile zuschreiben. Nach mehreren Versuchen habe ich herausgefunden, dass es in der :DoIt1 nach der "del" Funktion kommt, sprich durch den Aufruf der der Umleitung in die Log. Wenn ich das weg lasse geht es, aber es geht natürlich nicht in die log! Was muss ich ändern und warum? Ausserdem zeigt er das an: siehe unten
hier mal die Batch vielleicht sieht ja jemand den Fehler:

@echo off & setlocal enableDelayedExpansion

for /f "tokens=1,2" %%i in ('cscript //nologo C:\Scripts\EnumerateReadyCDDrives.vbs') do (set "CDName=%%~i") & (set CDDrive=%%j) & echo %%~i - %%j  
if [%CDName%]==[0405092228] (set "UNC=\\LAPBINE\share\Testumgebung\%CDName%") & goto :DoIt  
if [%CDName%]==[InfovisSet] (set "UNC=\\LAPBINE\share\Testumgebung\%CDName%") & goto :DoIt  
goto :eof

:DoIt
fOR /F "tokens=1-3 delims=/. " %%a in ("%date%") do set CDATE=%%c-%%b-%%a  
for /F "tokens=1,2 delims=: " %%a in ('time /t') do set ZEIT=%%a%%b  
set "logfile=%UNC%\%CDATE%_%ZEIT%_CDCOPY_LOG.txt"  
goto :DoIt1

:DoIt1
del /q /f /s "%UNC%\*.*" >>%logfile%  
if exist %UNC% dir /b /A:-d %UNC%>nul 2>nul ||  echo ***** %UNC% ist leer ***** >"%logfile%"  
if exist %UNC% dir /b /A:-d %UNC%>nul 2>nul &&  echo !!!!! %UNC% ist nicht leer !!!!! >"%logfile%"  
Set "sourcefiles=%CDDrive%\*.*" & set "targetdir=%UNC%\"  
Set "xcopyOpts= /s /e /y /i /h /r /k"  
Set "tmplist=c:\Testumgebung\x2copy.lst  
xcopy %xcopyOpts% /L "%sourcefiles%" "%targetdir%" >%tmplist%  
for /f %%i in ('findstr "Datei(en)" %tmplist%') do Set /a Anzahl=%%i  
for /f "delims=" %%i in ('findstr /v "Datei(en)" %tmplist%') do call :XCopyIt "%%i" "%sourcefiles%"  
del %tmplist%
goto :eof

:XCopyIt Parameter1: FQ-Quelldateiname para2: Sourcefiles
echo noch %Anzahl% Dateien...
set "targetsubpath=%~dp1"  
xcopy %xcopyOpts% %1 %targetDir%!targetSubpath:%~dp2=! goto :Mail >>"%logfile%"  
set /a Anzahl-=1
goto :eof

:Mail
echo versende Mail mit Logdatei
set eMail=schnickschnack@web.de
set subj=-s "Logdatei von CDCopy"  
set server=-server smtp.web.de
set password=-pw password
set user=-u schnickschnack@web.de
set x=-x "X-Header-Test: Can Blat do it? Yes it Can!"  
set debug=-debug -log blat.log -timestamp 
blat %0 -to %eMail% -f %eMail% %subj% %server% %user% %passsword% %debug% %x%
goto :eof 

0405092228 - D:
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess
 verwendet wird.
noch 71 Dateien...
Unzulässige Parameteranzahl
noch 70 Dateien...
Unzulässige Parameteranzahl
noch 69 Dateien...
Unzulässige Parameteranzahl
noch 68 Dateien...
Unzulässige Parameteranzahl
noch 67 Dateien...
Unzulässige Parameteranzahl
noch 66 Dateien...
Unzulässige Parameteranzahl
...
noch 3 Dateien...
Unzulässige Parameteranzahl
noch 2 Dateien...
Unzulässige Parameteranzahl
noch 1 Dateien...
Unzulässige Parameteranzahl

Und die email wird auch nicht versendet face-sad

Vielen Dank für eure Hilfe

Content-ID: 51842

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

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

bastla
bastla 16.02.2007 um 10:26:01 Uhr
Goto Top
Hallo Swenni2K!

Nach
set "logfile=%UNC%\%CDATE%_%ZEIT%_CDCOPY_LOG.txt"  
soll Dein Logfile im Pfad %UNC% angelegt werden, den Du mit
del /q /f /s "%UNC%\*.*" >>%logfile%  
aber gleich ganz radikal von allen Dateien befreist - vielleicht wäre das Log anderswo besser aufgehoben ...

BTW: Das "goto :DoIt1" mit unmittelbar folgender Sprungmarke ":DoIt1" ist relativ sinnfrei und die beiden "if exist ..." - Zeilen ließen sich so zusammenfassen:
if exist %UNC% dir /b /A:-d %UNC%>nul 2>nul && (echo !!!!! %UNC% ist nicht leer !!!!! >>"%logfile%") || echo ***** %UNC% ist leer ***** >>"%logfile%"  
Dass Du beim Überprüfen auf "ist leer" mit dem Schalter "/A:-d" bewusst Unterverzeichnisse ignorierst, ist vermutlich Absicht ...

Grüße
bastla