Nije tajna da Windows Explorer, kao i većina drugih Windows programa, uključujući PowerShell, ne može raditi s objektima datotečnog sustava s dubokim umetanjem mapa., dužina staze koja prelazi 260 znakova. Nadalje, ovo ograničenje postoji samo na aplikacijskoj razini, a sam datotečni sustav NTFS podržava staze datoteka do 32767 likovi.
Ovo ograničenje nameće knjižnica. Win32 API, s maksimalnom dužinom staze od 260 znakova (MAX_PATH = 260). Put se formira iz sljedećih elemenata općenito: [C: \] + [put_of_256_povjesci] + [], a maksimalna duljina jedne mape / datoteke u NTFS-u iznosi 255 znakova u Unicode. Kada koristite API funkcije unicode, moguće je koristiti stazu do 32767 znakova. Zbog toga postoje mnogi programi drugih proizvođača (na primjer, isti popularni upravitelji datoteka FAR i Ukupno zapovjednik) obrađuje datoteke / mape bez ikakvih poteškoća, čija dužina puta prelazi 260 znakova.
Ovo se ograničenje također ne odnosi na mrežni pristup korisnicima datotekama putem SMB protokola (zbog toga strukture direktorija s dugim putovima nisu neuobičajene za poslužitelje datoteka s korisničkim podacima). Administrator koji poslužuje ovaj poslužitelj ne može upravljati (brisati / premještati) datoteke s dugim putovima kroz standardno sučelje istraživača Windows Explorer. Pri pokušaju stvaranja / kopiranja datoteke u takav direktorij pojavljuje se pogreška:
Put odredišta je predug. Nazivi datoteka bili bi predugo za odredišnu mapu. Možete skratiti naziv datoteke i pokušati ponovo ili pokušati lokaciju koja ima skraćeni putOstali programi / dijalozi mogu na svoj način ukazivati na ograničenje..
Smiješno je da je 2014. godina izvan prozora, a mi i dalje govorimo o ograničenju od 260 znakova za maksimalnu duljinu staze u sustavu Windows ... No, čini se da se ne očekuju velike promjene u skoroj budućnosti, pa čak i u potpuno svježem tehničkom pregledu Windows 10, ovo ograničenje još uvijek postoji.
U ovom ćemo članku pokazati kako u Windowsu možete raditi s datotekama čiji put prelazi 260 znakova. U ovom slučaju naš je zadatak izbrisati direktorij koji sadrži datoteke s velikom dužinom puta.
Kada pokušate izbrisati takvu mapu iz Explorera, pojavljuje se pogreška:
Nazivi datoteka bili bi predugo za odredišnu mapu. Možete skratiti naziv datoteke i pokušati ponovo ili pokušati lokaciju koja ima skraćeni put.Powershell također ne uspije ispravno rukovati direktorijima i datotekama s velikim stazama većim od 260 znakova. Pri pokušaju brisanja mape s takvim datotekama (C: \ Install \ MS SQL 2012 Express Edition 64 bit \ verylongpath) pojavljuje se pogreška:
Ukloni-predmet. \ Vrlo dug put -ponovite
Remove-Item: Navedena staza, naziv datoteke ili oboje su predugi. Potpuno kvalificirano ime datoteke mora biti manje od 260
znakova, a ime direktorija mora biti manje od 248 znakova.
Na redu: 1 znak: 1
+ Ukloni-predmet. \ Vrlo dug put -ponovite
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ KategorijaInfo: WriteError: (C: \ Install \ MS S ... it \ verylongpath: String) [Remove-Item], PathTooLongExcepti
na
+ FullyQualifiedErrorId: RemoveItemIOError, Microsoft.PowerShell.Commands.RemoveItemCommand
Najjednostavnija opcija (koja se, u stvari, sugerira u prozoru pogreške), je umanjiti naziv nadređenih mapa, smanjujući ukupnu dužinu puta (ali nije uvijek primjenjivo).
Druga je mogućnost stvoriti simboličku vezu s dijelom staze i na taj način skratiti ukupnu dužinu staze:
mklink / d c: \ install \ link "C: \ Install \ MS SQL 2012 Express Edition 64 bit \ verylongpath"
Dalje, operacije s datotekama trebale bi se izvesti s direktorijom kojem je dodijeljena simbolička veza..
Druga opcija koja nalikuje radu sa simboličkom vezom je preslikavanje mape problema na virtualni disk (u našem primjeru X :), čime se također smanjuje duljina puta:
Subst X: "C: \ Install \ MS SQL 2012 Express Edition 64 bit \ verylongpath"
Sada možete raditi s podacima na X: pogonu, staze datoteka u kojima neće prijeći ograničenje. Nakon dovršetka rada, možete izbrisati virtualni disk:
Podst. X: / d
Ali osobno mi se najviše sviđa zadatak brisanja podataka u takvim situacijama robocopy.exe, koji podržava duge staze.
Upotreba opcije / MIR, alat za robotiranje može stvoriti potpunu kopiju (ogledalo) izvornog direktorija u cilju. Ako je izvorna mapa prazna, brišu se i svi podaci u odredišnoj mapi. Stvorite praznu mapu C: \ Instaliraj \ test i koristeći / MIR argument, kopirajte sadržaj testne mape u ciljanu mapu (ako naziv mape sadrži razmake ili ćirilične znakove, put mora biti priložen navodnicima).
robocopy / MIR C: \ Install \ test "C: \ Install \ MS SQL 2012 Express Edition 64 bit \ verylongpath"
Nakon izvršenja naredbe, briše se sadržaj direktorija C: \ Install \ MS SQL 2012 Express Edition 64 bit \ verylongpath (zamjenjuje ga sadržaj prazne mape).
Dakle, danas smo pokazali nekoliko jednostavnih trikova koje možete koristiti kada radite s mapama na datotečnim poslužiteljima koji sadrže mape čija dužina puta prelazi granicu od 260 znakova.