wtorek, 13 sierpnia 2013

Jak usunąć katalog z za długa ścieżką (ponad 256 znaków)

Niektóre programy potrafią nieźle narozrabiać (np. Cobian Backup): tworzą bardzo rozbudowaną strukturę katalogów i plików daleko przekraczającą dopuszczalną przez system (pełna ścieżka nie może mieć więcej niż 256 znaków). Nie jest to wielki problem, gdy strukturę da się ogarnąć kilkoma skróceniami nazw katalogów lub plików (np. do jednego znaku). Gorzej jeśli struktura katalogów przekracza kilkadziesiąt warstw. Wtedy usunięcie takiego tworu z dysku nie jest łatwą sprawą. Prezentujemy tu sprytny skrypt, które wykasuje całą tę kłopotliwą strukturę wg załączonego przykładu:

Nazwa_skryptu nazwa_katalogu_do_wykasowania

Poniżej zawartość skryptu, który nazwałem „Nazwa_skryptu”:

@echo off
if \{%1\}==\{\} @echo Syntax: DelFolder FolderPath&goto :EOF
if not exist %1 @echo Syntax: DelFolder FolderPath - %1 NOT found.&goto :EOF
setlocal
set folder=%1
set MT="%TEMP%\DelFolder_%RANDOM%"
MD %MT%
RoboCopy %MT% %folder% /MIR
RD /S /Q %MT%
RD /S /Q %folder%
endlocal

Skrypt korzysta z narzędzia RoboCopy, więc musi znajdować się w zasięgu zmiennej PATH.