Titlul este prea lung. Numele fișierului sau calea sursă prea lungă

Iată un exemplu de structură de foldere pe care am numit-o „păpușa mare”:

După cum puteți vedea, pe unitatea „D” (Date) există un folder video sursă, în el există un folder „Filme”, în el există „Tot ce aveți nevoie pentru a viziona filme” și apoi, în același mod, un folder într-un folder. În același timp, multe foldere au nume și nume lungi - mai mult de 10-15 caractere, ceea ce în total va da volumul de caractere în toate numele mai mult de 260. Și dacă la sfârșitul unei astfel de „matryoshka” există o fișier, atunci se poate dovedi că nu puteți lucra cu el, puteți... Uneori sistemul în sine nu vă permite să creați în cele din urmă un folder sau un fișier care depășește numărul permis de caractere, dar uneori, din anumite motive, acest lucru se întâmplă.

La început, pentru începători, voi explica ce este o cale către un fișier și un folder. Calea este așa-numita adresă de pe computerul în care se află fișierul sau folderul. De exemplu, un fișier numit „Fișierul meu.txt” se află pe unitatea locală D: în folderul „Documente”. Apoi calea către acest fișier va arăta astfel:

D:\Documente\Fișierul meu.txt

Sau, de exemplu, așa va arăta calea din exemplul de mai sus, unde am arătat o structură complexă de foldere.

După cum puteți vedea, numărul de caractere din calea de mai sus este mare și este posibil ca la sfârșit să existe un fișier sau un folder cu un nume lung pe care nu îl puteți șterge.

Când încercați să ștergeți un fișier cu un nume de cale lungă, veți primi o fereastră cu o eroare ca aceasta:

Am încercat să recreez în mod artificial problema și asta am obținut.

Pe unitatea „D” am creat un folder cu numele scurt „1” și am plasat un fișier cu un nume foarte lung în el. Iată un exemplu:

Acum redenumesc și folderul „1” cu un nume foarte lung, de exemplu:

Interesant, Windows vă permite să redenumiți un folder cu un nume atât de lung, în ciuda faptului că numărul de caractere din numele acestui folder + numele fișierului depășește deja 260! Ei bine, după ce am redenumit folderul cu un nume lung, nu mai pot șterge fișierul aflat în el și afișează eroarea.

Sau iată un alt exemplu... Întrețin site-ul Colegiului de Fabricare de Instrumente din Moscova, unde anterior lucram cu normă întreagă și uneori folosesc o copie a site-ului pe computer pentru a testa câteva „bunătăți” noi pentru site. Ce se întâmplă dacă instalez ceva rău și site-ul de pe hosting moare? :) Și așa o verific pe computer și dacă totul este în regulă, atunci l-am configurat pe un site real aflat pe hosting. Așadar, o dată am transferat întregul site de la găzduire pentru a testa un lucru și, după ce am terminat de lucrat, am decis să șterg folderul cu site-ul de pe computer. La urma urmei, cântărește aproximativ 6 GB. Întregul site a fost șters, cu excepția unui număr de foldere. Am început să caut și am văzut că acele foldere care conțineau un fișier cu un nume lung sub formă de hieroglife nu au fost șterse:

Am încercat din nou să șterg acest fișier cu un nume lung și am văzut aceeași eroare pe care am menționat-o mai sus. Am încercat să-l redenumesc, dar nici nu merge. Ei bine, a trebuit să mă gândesc cum să rezolv problema.

Cum să rezolvi problema ștergerii unui folder/fișier cu o cale lungă!

Am încercat 2 moduri de a șterge un folder/fișier cu un nume lung în calea către acesta. Ambele nu sunt dificile din punct de vedere tehnic (mai ales primul), așa că cred că un începător poate face față dacă face totul exact așa cum arăt eu:

    Redenumiți mai multe foldere din calea fișierului cu un nume mai scurt. Aceasta este cea mai simplă soluție care ar trebui să ajute deja pe mulți! Să presupunem că aveți un fișier într-un folder cu un nume foarte lung pe care nu îl puteți șterge, deschide, copia și, în general, nu puteți lucra.

    Apoi încercați pur și simplu să redenumiti folderul în care se află fișierul cu un nume lung, de exemplu, la „1”. Să revin la unul dintre exemplele de mai sus. Iată un folder cu un nume lung:

    Folosind Windows Explorer standard, redenumesc numele acelui folder în „1” și așa arată acum calea către fișier:

    Acum puteți lucra în siguranță cu fișierul, sistemul vă va permite să îl deschideți, să îl redenumiți și să îl ștergeți.

    Dacă aveți un arbore de foldere lung, de ex. ca o păpușă de cuibărit, într-un folder există altul, în el există un altul, apoi altul, apoi începe să redenumești chiar din primul folder din această păpușă de cuib. Nu cu ultimul de pe listă, ci cu primul!

    Este posibil să existe un număr mare de foldere și să nu le puteți redenumi pe unele din cauza aceleiași erori sau vă va lua mult timp. În acest caz, vă propun a doua metodă.

    Metoda este că puteți lua un folder, de exemplu, în mijlocul unui arbore comun și îl puteți conecta ca un disc virtual. Un disc virtual este ceva care ne amintește de un disc local obișnuit, dar care este pur și simplu legat de un anumit folder, de exemplu, pentru o interacțiune rapidă cu acesta.

    Să presupunem că aveți un drum lung ca acesta:

    D:\Video\Filmele mele\Tot ce aveți nevoie pentru a viziona filme\Programe pentru vizionarea de filme\Cum se deschide filme MP4\Lista de exemple de filme MP4\Lista de programe pentru deschiderea MP4\Ce nu trebuie să faceți când deschideți fișiere MP4

    Să presupunem că în ultimul folder avem un fel de fișier problematic cu care nu putem lucra, deoarece calea către el, după cum vedem, este destul de lungă :)

    Putem lua și conecta unul dintre folderele cu un nume lung în mijlocul căii ca un disc virtual. Fie ca acesta să fie folderul „Programe pentru vizionarea de filme”.

    Pentru a conecta un disc virtual, avem nevoie de așa-numita linie de comandă Windows, adică. consolă.

    Îl puteți deschide prin căutarea Windows. În căutare, tastați „Linia de comandă”:

    În fereastra liniei de comandă trebuie să introducem comanda:

    subst virtual_disk_letter "path_to_folder"

    Puteți seta orice literă de unitate, atâta timp cât aceasta nu este deja ocupată de una dintre unitățile locale. De exemplu, aveți o unitate locală C și D, ceea ce înseamnă că nu mai puteți apela unitatea virtuală cu aceeași literă. Îl puteți numi, de exemplu, litera „X”, deoarece este rar folosită în Windows.

    Pentru calea folderului, inserați calea către folderul pe care doriți să îl conectați ca unul virtual. După cum am spus deja, în exemplul meu vom face „Programe pentru vizionarea de filme” ca un folder virtual, ceea ce înseamnă că calea trebuie specificată astfel:

    D:\Video\Filmele mele\Tot ce aveți nevoie pentru a viziona filme\Programe pentru vizionarea de filme\

    Deci, comanda finală în cazul meu va arăta astfel:

    subst X: „D:\Video\Filmele mele\Tot ce aveți nevoie pentru a viziona filme\Programe pentru vizionarea de filme\”

    Pentru a executa comanda introdusă, apăsați tasta „Enter” de pe tastatură. Discul virtual va fi creat.

    Acum să mergem la Windows Explorer, să mergem la secțiunea „Acest PC” (sau „Computer”) și să vedem discul virtual creat acolo:

    Îl poți distinge după litera sa. Am atribuit litera „X” discului virtual. Acum, dacă deschidem acest disc virtual, ne vom găsi imediat în folderul „Programe pentru vizionarea filmelor”. Aceste. am luat și am tăiat jumătate din calea către folderul final.

    Pentru comparatie...

    Anterior, calea către folderul final arăta astfel:

    D:\Video\Filmele mele\Tot ce aveți nevoie pentru a viziona filme\Programe pentru vizionarea de filme\Cum se deschide filme MP4\Lista de exemple de filme MP4\Lista de programe pentru deschiderea MP4\Ce nu trebuie să faceți când deschideți fișiere MP4

    După conectarea discului virtual la folderul „Programe pentru vizionarea de filme”, calea către folderul final arată astfel:

    X:\Cum se deschide filmele MP4\Lista de exemple de filme MP4\Lista de programe pentru deschiderea MP4\Ce să nu faceți când deschideți fișiere MP4

    Simți diferența? Calea este scurtată la jumătate, deoarece litera de unitate ne direcționează imediat către folderul din mijlocul căii :) Și, deoarece calea este mult scurtată, probabil că acum ați eliminat limita de caractere din numele fișierelor și folderelor și veți să poată șterge un fișier sau un folder cu un nume lung!

    După ce rezolvi problema cu fișierul, discul virtual poate fi șters din nou, astfel încât să nu devină o bătaie de vedere în Explorer.

    Pentru a face acest lucru, deschideți din nou linia de comandă Windows și introduceți comanda:

    Subst virtual_disk_letter /d

    În cazul meu, litera de unitate este „X”, deci comanda ar arăta astfel:

Când mă gândeam la opțiuni pentru rezolvarea problemei, cum să șterg un folder sau fișier cu nume lung, am găsit o altă opțiune pe Internet: ștergerea fișierului problematic prin programul Total Commander. Am incercat, nu a mers, de aceea nu am recomandat aceasta metoda :)) Iar metoda, chiar daca ar merge pentru cineva, sincer nu este amuzanta, pentru ca trebuie sa instalezi un program suplimentar pe calculator. pentru a șterge doar un fișier sau dosare cu un nume lung...

Cred că dacă apare o problemă similară, pe care am avut-o de mai multe ori, una dintre metodele descrise mai sus vă va ajuta cu siguranță.

Asta e tot! Ne vedem curand in articolele urmatoare ;)

Sistemul de operare Windows dăunător vă împiedică să ștergeți un fișier și strigă că „calea sursă este prea lungă”? În acest articol vă voi spune cum să învingeți ușor și simplu, fără niciun program, acest flagel prin scurtarea numelui fișierului.

Drumul către sursă este prea lung - de ce?

Aș dori să explic imediat de ce apare un astfel de avertisment de sistem și nu este posibil să efectuați acțiuni de bază de copiere sau ștergere a unui fișier (dosar)...

Notificarea în sine conține răspunsul la această întrebare - sistemul de fișiere Windows nu acceptă (nu înțelege) nume de fișiere sursă mai lungi de 255 de caractere.

Dar numele fișierului sau al folderului este scurt, de exemplu, „Fotografii de vacanță”? Faptul este că sistemul „prost” percepe întreaga cale către fișier ca numele său. Dacă fișierul sau folderul dvs. se află undeva prea adânc în managerul de fișiere, atunci numele acestuia va arăta cam așa...

Deci simbolurile numelor sunt adunate într-o bandă de peste 255 de bucăți.

Cum să ștergeți un fișier sau un folder care nu poate fi șters în acest caz? Este foarte simplu - trebuie să scurtați numele fișierului (calea) redenumind folderele imbricate.

Cum să ștergeți un fișier cu un nume lung

Vă voi arăta cu exemplul meu cum să ștergeți un fișier cu un nume lung care, așa cum scrie sistemul, are o cale prea lungă către sursă.

Ieri m-am hotarat curățați-vă computerul din vechile copii de rezervă ale site-ului, dar nu au dorit să fie șterse. După cum ați ghicit, a apărut un avertisment că drumul către sursă este prea lung...

Pornind de la primul folder din această cale lungă, am redenumit mai multe lucruri...

...și a încercat din nou să scap de fișierul cu un nume acum mai scurt - a mers în siguranță în țara fișierelor șterse.

Desigur, noul nume de fișier (dosar) ar trebui să fie format dintr-un caracter sau un număr, ca în exemplul meu.

Așa se rezolvă cu ușurință problema ștergerii fișierelor sau folderelor cu nume lung. Aceasta nu este singura metodă, desigur. Can eliminați cu programe speciale sau prin registry - tocmai am arătat metoda manuală. Pentru unii va dura doar un minut, pentru alții va dura o jumătate de oră - depinde de dvs. să decideți cum să scurtați numele fișierului și calea prea lungă către sursă.

Până la noi sfaturi utile și programe de calculator interesante.

Nu este un secret pentru nimeni că Windows Explorer, ca majoritatea altor aplicații Windows, inclusiv PowerShell, nu poate funcționa cu obiecte de sistem de fișiere cu imbricare de foldere profunde. a cărei lungime a căii depășește 260 de caractere. Mai mult decât atât, această limitare există doar la nivel de aplicație, iar sistemul de fișiere NTFS însuși acceptă căi de fișiere până la 32767 personaje.

Această limitare este impusă de bibliotecă Win32 API, și a cărui lungime maximă a căii este de 260 de caractere ( MAX_PATH=260). În general, traseul este format din următoarele elemente: +[cale_of_256_characters]+[ ] , iar lungimea maximă a unui director/fișier în NTFS este de 255 de caractere în Unicode. Când utilizați funcțiile API Unicode, este posibil să utilizați calea către 32767 personaje. Datorită acestui fapt, multe programe terțe (aceiași manageri de fișiere populari, de exemplu DEPARTEŞi Comandant total) procesează fără nicio dificultate fișierele/folderele a căror lungime de cale depășește 260 de caractere.

Sfaturi. Puteți ocoli această limitare a API-ului Win32 și puteți lucra cu nume lungi de fișiere folosind formatul de cale UNC, specificând calea absolută către fișier folosind prefixul de cale cu lungime extinsă \\?\ . De exemplu, așa \\?\C:\SomeLongPath\LongNameFile.txt

Această restricție nu se aplică și atunci când utilizatorii au acces la fișiere prin intermediul protocolului SMB (din acest motiv, structurile de directoare cu căi lungi sunt comune pe serverele de fișiere cu date utilizator). Administratorul care întreține acest server nu poate gestiona (șterge/muta) fișiere cu căi lungi prin interfața standard Windows Explorer. Când încercați să creați/copiați un fișier într-un astfel de director, apare o eroare:

Calea spre destinație prea lungă. Numele fișierului ar fi prea lung pentru folderul de destinație. Puteți scurta numele fișierului și puteți încerca din nou sau puteți încerca o locație care are o cale scurtă

Alte programe/casete de dialog pot avea propriul mod de a raporta prezența restricției.

De acord, este amuzant că este 2014 și încă vorbim despre limita de 260 de caractere pentru lungimea maximă a căii în Windows... Dar se pare că nu sunt de așteptat schimbări drastice în viitorul apropiat și chiar și în cel mai recent Previzualizarea tehnică Windows 10, această limitare încă mai există.

În acest articol vom arăta cum în Windows puteți lucra cu fișiere a căror cale depășește 260 de caractere. În acest caz, sarcina noastră este să ștergem un director care conține fișiere cu o lungime mare de cale.

Când încercați să ștergeți un astfel de director din Explorer, apare o eroare:

Numele fișierului ar fi prea lung pentru folderul de destinație. Puteți scurta numele fișierului și puteți încerca din nou sau puteți încerca o locație care are o cale scurtă.

De asemenea, Powershell nu poate gestiona corect directoarele și fișierele cu căi mari care depășesc 260 de caractere. Când încercați să ștergeți un director cu astfel de fișiere (C:\Install\MS SQL 2012 Express Edition pe 64 de biți\verylongpath), apare o eroare:

Remove-Item .\verylongpath -Recurse

Remove-Item: calea specificată, numele fișierului sau ambele sunt prea lungi. Numele de fișier complet calificat trebuie să fie mai mic de 260
caractere, iar numele directorului trebuie să aibă mai puțin de 248 de caractere.
La linia:1 char:1
+ Remove-Item .\verylongpath -Recurse
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: WriteError: (C:\Install\MS S...it\verylongpath:String) , PathTooLongExcepti
pe
+ FullyQualifiedErrorId: RemoveItemIOError, Microsoft.PowerShell.Commands.RemoveItemCommand

Cea mai simplă opțiune (este, de fapt, sugerată în fereastra de eroare) este de a scurta numele folderelor părinte, reducând lungimea totală a căii (dar aceasta nu este întotdeauna aplicabilă).

Mklink /d c:\install\link „C:\Install\MS SQL 2012 Express Edition pe 64 de biți\verylongpath”

O altă opțiune, care amintește de lucrul cu o legătură simbolică, este să mapați folderul problematic pe un disc virtual (în exemplul nostru X:), reducând astfel și lungimea căii:

Subst X: „C:\Install\MS SQL 2012 Express Edition pe 64 de biți\verylongpath”

Acum puteți lucra cu date pe unitatea X:, căile către fișiere în care nu vor depăși limita. După terminarea lucrului, puteți șterge discul virtual:

Subst X: /d

Dar personal, ceea ce îmi place cel mai mult pentru sarcina de ștergere a datelor în astfel de situații este capacitatea robocopy.exe, care sprijină lucrul cu căi lungi.

Folosind opțiunea /MIR, utilitarul robocopy poate crea o copie completă (oglindă) a directorului sursă în directorul țintă. Și, dacă folderul sursă este gol, toate datele din folderul țintă sunt, de asemenea, șterse. Să creăm un folder gol C:\Instalare\testși folosind argumentul /MIR, copiați conținutul folderului de testare în folderul țintă (dacă numele folderului conține spații sau caractere chirilice, calea trebuie inclusă între ghilimele).

Robocopy /MIR C:\Install\test "C:\Install\MS SQL 2012 Express Edition pe 64 de biți\verylongpath"

După executarea comenzii, conținutul directorului C:\Install\MS SQL 2012 Express Edition pe 64 de biți\verylongpath este șters (înlocuit cu conținutul directorului gol).

Așadar, astăzi am arătat câteva trucuri simple pe care le puteți folosi atunci când lucrați cu foldere pe servere de fișiere care conțin foldere a căror lungime de cale depășește limita de 260 de caractere.