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:
Und die email wird auch nicht versendet
Vielen Dank für eure Hilfe
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
Vielen Dank für eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 51842
Url: https://administrator.de/contentid/51842
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
1 Kommentar
Hallo Swenni2K!
Nach
soll Dein Logfile im Pfad %UNC% angelegt werden, den Du mit
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:
Dass Du beim Überprüfen auf "ist leer" mit dem Schalter "/A:-d" bewusst Unterverzeichnisse ignorierst, ist vermutlich Absicht ...
Grüße
bastla
Nach
set "logfile=%UNC%\%CDATE%_%ZEIT%_CDCOPY_LOG.txt"
del /q /f /s "%UNC%\*.*" >>%logfile%
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%"
Grüße
bastla