Fehler in Batch - Datei: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird bzw. ein Prozess hat versucht zu einer nicht bestehenden Pipe zu schreiben
Fehler in for - Schleife einer Batch - Datei
Kann ich irgendwie herausfinden, ob wirklich ein Prozess gerade diese Datei benutzt und welche Datei überhaupt betroffen ist?
Wie sieht es mit der Pipe aus, woran kann dabei der Fehler liegen?
Ist es möglich die Datei trotz dieses Fehlers zu beabeiten oder den Fehler irgendwie abzufangen?
Hier ist die Schleife die diesen Fehler hervorruft:
(@for /f "delims=_. tokens=1-3" %%i in ('dir /b /s /o:d R:\Werte\*_*.dfd') do (@type %%~dpnxi.%%k|find /v /i "K1205" > %%~dpnxi.tmp ))
Das interessante daran ist, das die Batch - Datei bereits einwandfrei funktioniert hat, nur in letzter Zeit tritt dieser Fehler relativ häufig auf.
€dit: Bei der ersten Datei funktioniert die Schleife noch einwandfrei, ab der zweiten Datei werden sehr viele Leerzeilen eingefügt und ab der 4. Datei läuft die Batch - Datei nicht mehr.
Kann der Fehler durch die Bearbeitung zu vieler Dateien auftreten?
Wenn ja, wie kann ich die Schleife trotzdem nutzen, ohne das diese Fehler auftreten?
Kann ich irgendwie herausfinden, ob wirklich ein Prozess gerade diese Datei benutzt und welche Datei überhaupt betroffen ist?
Wie sieht es mit der Pipe aus, woran kann dabei der Fehler liegen?
Ist es möglich die Datei trotz dieses Fehlers zu beabeiten oder den Fehler irgendwie abzufangen?
Hier ist die Schleife die diesen Fehler hervorruft:
(@for /f "delims=_. tokens=1-3" %%i in ('dir /b /s /o:d R:\Werte\*_*.dfd') do (@type %%~dpnxi.%%k|find /v /i "K1205" > %%~dpnxi.tmp ))
Das interessante daran ist, das die Batch - Datei bereits einwandfrei funktioniert hat, nur in letzter Zeit tritt dieser Fehler relativ häufig auf.
€dit: Bei der ersten Datei funktioniert die Schleife noch einwandfrei, ab der zweiten Datei werden sehr viele Leerzeilen eingefügt und ab der 4. Datei läuft die Batch - Datei nicht mehr.
Kann der Fehler durch die Bearbeitung zu vieler Dateien auftreten?
Wenn ja, wie kann ich die Schleife trotzdem nutzen, ohne das diese Fehler auftreten?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 36629
Url: https://administrator.de/contentid/36629
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
7 Kommentare
Neuester Kommentar
Ich würde dir Vorschlagen deine Bat Datei so um zu bauen, das du Kontrollpunkte einbaust und leserlicher machst.
Dann kann man die Fehler besser finden und lokalisieren.
z.b. anstatt den Dir Befehl in der Forschleife aufzurufen, den Dir Befehl vorher laufen lassen und anschliessend über eine
Datei in die Forschleife einbauen.
z.b.
Dir /b *.* > c:\dir.txt
For /f "delims= tokens=1,2,3* " %%i in (c:\dir.txt) do ...
muss gerade wech melde mich später
Mfg Metzger
Dann kann man die Fehler besser finden und lokalisieren.
z.b. anstatt den Dir Befehl in der Forschleife aufzurufen, den Dir Befehl vorher laufen lassen und anschliessend über eine
Datei in die Forschleife einbauen.
z.b.
Dir /b *.* > c:\dir.txt
For /f "delims= tokens=1,2,3* " %%i in (c:\dir.txt) do ...
muss gerade wech melde mich später
Mfg Metzger
Mmhh, ja,
Du kannst die (eventuellen) Fehlermeldungen vom DIR-Befehl abfangen mit "^2^>nul".
Also in der ursprünglichen FOR-Konstruktion:
Dann bleibt dir die Verarbeitung von "Datei nicht gefunden" oder "Auf Verzeichnis konnte nicht zugegriffen werden" erspart.
Gruß
Biber
interessiert die M$ - Jungs offenbar überhaupt nicht.
...braucht Dich aber auch nicht zu interessieren.Du kannst die (eventuellen) Fehlermeldungen vom DIR-Befehl abfangen mit "^2^>nul".
Also in der ursprünglichen FOR-Konstruktion:
(@for /f "delims=_. tokens=1-3" %%i in ('dir /b /s /o:d R:\Werte\*_*.dfd ^2^>nul') do ...
Gruß
Biber
...wenn die Fehlermeldungen richtig wären. Zu was sind sie sonst gut?
Jein...
Da musst Du (zumindest bei Batches oder sonstigen automatisierten Programmabläufen) unterscheiden zwischen "wirklichen" Fehlern und "erwarteten" Fehlern, die Du auch ignorieren kannst.
Beispiel:
Wenn ich in irgendeinem Batchablauf eine Verzeichnisstruktur durch wackele, um alle Dateien *.txt zu kopieren, wenn sie denn älter sind als xx Tage...
...dann wäre für den DIR-Befehl natürlich ein Fehler, wenn bei "DIR x:\Bla\Blubb\*.txt" keine Datei gefunden wird.
Es käme dann die (Fehler-)Meldung: "Datei nicht gefunden".
Für mich wäre es von der Programmlogik kein Fehler.. wenn es keine *.txt-Datei gibt, brauch ich nichts weiter zu tun.
Einen derartigen Fehler leite ich natürlich (wenn ich rechtzeitig daran denke) mit diesem o.g. "2>nul" um.
Tue ich das nicht, kommt es -wie Du ja oben gezeigt hast - wenige Verarbeitungsschritte danach zu Folgefehlern, die dann unter Umständen gar nicht aussagekräftig sind.
Gruß Biber