Anzeige

Am Puls von Microsoft

Anzeige

[gelöst] Ordner in Netzwerklaufwerk via Batch löschen -> Pfad-/Verzeichnisstruktur zu lang

chrisdi91

Herzlich willkommen
Hallo zusammen,

wie ich ein bestimmten Ordner, hier "slprj" mit unter Verzeichnissen löschen kann, habe ich mir bereits heraus gesucht.

Code:
@echo off


echo Deleting slprj directories ...

for /f "delims=" %%a in ('dir /B /S /AD "%cd%\*slprj"') do @( 
rd "%%a" /s /q >nul 2>&1
)


echo.
echo done.
echo.
pause

Dies funktioniert auch soweit.

Mein Problem ist nun, dass ich bei manchen Pfaden bei unserem Tauschlaufwerk wohl zu viele Unterordner oder zu lange Pfade habe.

Ich hab etwas gelesen von
Code:
dir /x
zum anzeigen vom kurzen Namen.
Bringt mir das etwas?
Oder mit
Code:
subst
den Pfad kürzen?
Alternativ wäre cool, wenn eine Fehlermeldung angezeigt werden würde. Beispielsweise so, wie wenn er keine zu löschenden Dateien fand.
D.h. dass eine Meldung käme, dass er nichts löschen konnte, weil z.B. die Pfade zu lang waren.

Evtl. stimmt meine Vermutung auch gar nicht und es ist etwas ganz anderes.

Danke schon mal für euere Hilfe!
Vielen Dank und beste Grüße
chrisdi91
 
Zuletzt bearbeitet:
Anzeige
AW: Ordner in Netzwerklaufwerk via Batch löschen -> Pfad-/Verzeichnisstruktur zu lang

In der Zeile:
Code:
rd "%%a" /s /q [B]>nul 2>&1[/B]
wird die Ausgabe des Befehls unterdrückt, also wenn ein Pfadname zu lang ist oder eine Datei noch in Verwendung. Lässt man die Ausgabeumleitung weg (>nul 2>&1) und kürzt den Befehl auf:
Code:
rd "%%a" /s /q
Sollte man entsprechende Fehlermeldungen des "rd" Befehls angezeigt bekommen.

Gerade bei einem Tauschlaufwerk sollte man aus Gründen der Kompatibilität darauf achten, das Pfade (und zwar vom Laufwerkbuchstaben bis zum Dateinamen alles inklusive, also X:\Y\Z.abc -> 10 Zeichen) nicht länger als 260 Zeichen werden. NTFS Dateisysteme können allerdings deutlich längere Pfadnamen verwalten, und auch in Batch Dateien ist das möglich, indem man nur absolute Pfade nutzt und denen ein "\\?\" voranstellt, bspw.:

Code:
for /f "delims=" %%a in ('dir /B /S /AD "[B]\\?\[/B]%cd%\*slprj"') do @(

Der subst Befehl wäre natürlich auch eine Alternative, vorallem da ich das mit dem \\?\ Prefix nicht testen konnte, entweder löscht WIndows bei mir mit oder ohne Prefix zu lange Pfade anstandslos, oder es behauptet Dateien seine n in Verwendung wenn diese Pfade zuvor mit dem WIndows Explorer aufgerufen wurden ....
 
AW: Ordner in Netzwerklaufwerk via Batch löschen -> Pfad-/Verzeichnisstruktur zu lang

Vielen Dank erstmal!
also bei mir kam mit
Code:
for /f "delims=" %%a in ('dir /B /S /AD "\\?\%cd%\*slprj"') do @(
trotzdem die Meldung, dass die Pfade zu lang seien.

Das mit dem Weglassen des
Code:
>nul 2>&1
ist okay, damit wird es angezeigt.

Ich glaube ich hatte es unterdrückt, damit mir nicht jedereinzelne Löschvorgang angezeigt wird.
Danke :)
 
Anzeige
Oben