Greška "Path too long" se još uvijek javlja

Windows LogoGreška "Destination Path Too Long", za koju ste mislili da je davno ispravljena, opet se pojavila kada ste pokušali kopirati datoteke i mape korisnika u Windows 10 operacijskom sustavu. Razlog je Windows Explorer koji nije u mogućnosti izvršiti operaciju kopiranja ili preimenovanja ako putanja (path) u svom nazivu ima 260 i više znakova. Ova mogućnost nije uključena po defaultu, jer se željelo zadržati kompatibilnost sa starijim datotečnim sustavima.

U našem konkretnom slučaju, dokumenata i mapa koji su u svom nazivu ili putanji imali 260 i više znakova bilo je jako puno. Trikovi poput kreiranje prečice u ovom slučaju nisu pomogli.

Microsoft je od verzije Windows-a 1607 omogućio isključivanje ovog ograničenja, pa smo probali riješiti problem na predloženi način. No, prije nego što napravimo ovu operaciju nad stvarnim datotekama, napravit ćemo test na nekoliko dugačkih putanja s datotekama, koje ćemo kasnije pokušati kopirati u mapu "Documents".

Na particiji D:\ u mapi "KopijeDokumenata" kreirat ćemo niz mapa naziva "Dokument1" i u zadnoj mapi datoteku "pppppp.txt" što zajedno s glavnom mapom "KopijeDokumenta" čini ukupno 262 znaka u putanju.

D:\KopijeDokumenata>mkdir
mape\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\
Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\
Dokument1\Dokument1\Dokument1\Dokument1

Iskoristimo naredbeni redak i s CD promijenimo putanju do našeg zadnjeg direktorija:

D:\KopijeDokumenata>cd
mape\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\
Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\Dokument1\
Dokument1\Dokument1\Dokument1\Dokument1

U zadnjem direktoriju kreiramo praznu datoteku "pppppp.txt"

copy NUL pppppp.txt

 

Nakon pripreme mapa i datoteke pokrenimo gpedit.msc (Group Policy Editor), gdje ćemo uključiti podršku za kopiranje dugačkih staza.

Putanja koju moramo odabrati je sljedeća:

Computer Configuration-->>Administrative
Tempaltes-->>System-->>FileSystem-->Enable Win32 long paths

 

 

Nakon što potvrdimo "Enable Win32 long paths" dobijemo novi prozor u kojem uključimo opciju "Enable". Nakon podešavanja ove opcije resetirajmo računalo.

Trenutak istine... pokušat ćemo kopirati naše mape koje smo prethodno pripremili za testiranje, no prilikom testiranja opet dobijamo poruku "Destination Path Too Long":

Nažalost, iz prikazanog se može vidjeti da ovaj Group Policy ne radi i ograničenje od 260 znakova je još prisutno. Mi smo završili s napola kopiranom mapom, pa sada ni ne znamo što se točno iskopiralo, a što nije.

Kako ćemo najbezbolnije riješiti ovaj problem? Velikih problema neće biti ako se radi o samo jednoj putanji koja prelazi 260 znakova. Možemo ručno pronaći tu datoteku ili mapu i prebaciti je na odgovarajuće mjesto, jer nam to neće oduzeti puno vremena.

No, što u slučaju da takvih putanja ima puno, pa nam sada glavobolju stvara činjenica da smo završili u situaciji da ne znamo sa sigurnošću koliko se podataka iskopiralo na drugu lokaciju?

Najbolje je u tom slučaju provjeriti koliko na računalu uopće ima dugačkih putanja koje prelaze 260 znakova, a možete (za svaki slučaj) potražiti i putanje s 250 i više znakova.

Za tu svrhu koristit ćemo vrlo jednostavnu naredbu iz naredbenog retka:

D:\>dir /s /b | sort /r /+250 /o popis.txt

/s - prikaz datoteka i podmapa
/b - prikaz bez zbirnih informacija
| - preusmjeravanje
sort - sortiranje
/r – obrnuto sortiranje Z-A (reverse sort)
/+250 - 250 i više znakova
/o – sprema izlaz naredbe u navedenu datoteku

Datoteku s ispisom smo učitali u program Notepad++ i na samom vrhu se nalazi naša najduža putanja "D:\KopijeDokumenata\Dokument1......." s ostalim ispisom mapa i datoteka. Ovim načinom smo si olakšali posao kod kopiranja dokumenata, jer sad točno znamo koje putanje neće biti uspješno kopirane. Umjesto ponovnog kopiranja, sad se možemo usredotočiti samo na one s najdužim putanjama.

Iz popisa vidimo koja je to najduža putanja koja nije kopirana tj. prelazi granicu od 260 znakova. Za njezino kopiranje koristit ćemo iz naredbenog retka, naredbu "robocopy" koja ovaj problem bezbolno rješava.

Naredba "robocopy" sastavni je dio Windows 7 i novijih Windows operacijskih sustava. Ako kojim slučajem netko radi s Windows XP onda je dovoljno s Interneta preuzeti robocopy.exe, a nikakva instalacija nije potrebna.

Sintaksa naredbe:

"robocopy IZVOR CILJ /PARAMETRI"

Popis prekidača i mogućnosti "robocopy" možete izlistati s naredbom:

robocopy /? | more

U našem primjeru kopirat ćemo mapu KopijeDokumenata na "D:" particiji u mapu Documents također na "D:" particiji i koristit ćemo prekidač /E za kopiranje podmapa i praznih direktorija.

Nakon što smo potvrdili naredbu slijedi kopiranje onoga što Windows Explorer nije mogao:

Na samom kraju vidimo statistiku što je kopirano (koliko mapa, datoteka, vrijeme itd.) i naravno sada možemo vidjeti da je kopiranje uspješno izvršeno.

 

 

Kuharice: 
Vote: 
5
Vaša ocjena: Nema Average: 5 (1 vote)

Komentari

Opis za opciju "Enable Win32 long paths" kaže:

Enabling Win32 long paths will allow manifested win32 applications and Windows Store applications to access paths beyond the normal 260 character limit per node on file systems that support it.  ...

U tom opisu obično se previdi riječ "manifested". To ovdje hoće reći da neka win32 aplikacija mora manifestirati da je ona spremna koristiti dugačke putanje - tek tada dotični group policy stvarno uključuje tu mogućnost u toj aplikaciji.

Prema onome što sam našao na netu (vidi npr. https://en.wikipedia.org/wiki/Manifest_file i https://docs.microsoft.com/en-us/windows/desktop/sbscs/manifests) taj manifest je XML dokument, uključen u sam EXE ili u zasebnoj datoteci, koji specificira ovisnost aplikacije o nekim sistemskim komponentama. Npr. na računalu koje ima instaliran MS Office 2013 vidim da u "C:\Program Files (x86)\Microsoft Office\Office15" postoji više takvih XML-datoteka s nastavkom .manifest.

Članak How to Enable or Disable Win32 Long Paths in Windows 10 kaže da bi aplikacija koja podržava dugačke putanje trebala u svom manifestu sadržavati sljedeće:

<longPathAware>true</longPathAware>

Aplikacije iz paketa MS Office 2013 ne sadrže tu opciju u svojim manifestima. Očito da niti Windows Explorer na Windows 10 još ne podržava dugačke putanje. Sve to govori da je priča kako Windows 10 od ver. 1607 omogućava dugačke putanje, u stvari poluinformacija. Trebalo bi reći da se dugačke putanje mogu omogućiti samo u aplikacijama koje su dizajnirane da koriste dugačke putanje.

Našao sam da postoje neki file manageri koji podržavaju dugačke putanje, npr. One Commander.