22Aug
Se lavori con Windows abbastanza a lungo, specialmente con cartelle e file con nomi lunghi, ti imbatterai in un bizzarro errore: Windows segnalerà che il percorso della cartella o il nome del file è troppo lungo per spostarsi in una nuova destinazione o addirittura eliminarlo. Qual è l'accordo?
Hey How-To Geek!
Così l'altro giorno stavo riorganizzando alcuni file sul mio computer, creando cartelle, quel tipo di cose. Poi, quando stavo spostando alcuni file in una cartella, ricevo un messaggio, affermando che il percorso della cartella risultante sarebbe troppo lungo. Ero confuso. So che ogni singolo SO da quando DOS supporta Long Filenames, eppure Windows sostiene che il percorso sia troppo lungo? Perché succede?
Sincerly,
Mr. Disorganized
Il problema che stai incontrando è uno sfortunato incrocio di due sistemi che, in casi come questo, produce un errore. Per capire esattamente da dove proviene l'errore, dobbiamo scavare nella storia di Long Filenames( LFN) e in che modo Windows interagisce con loro prima di approfondire le soluzioni. I nomi di file lunghi
sono stati introdotti, tramite l'architettura MS-DOS sottostante, in Windows 95. Il nuovo sistema LFN consentiva nomi di file e directory con un massimo di 255 caratteri. Si trattava di una gradita espansione del precedente sistema di nomi di file, solitamente chiamato filenaming 8.3 poiché il nome era limitato a otto caratteri e un'estensione di tre cifre, ma anche noto come Short Filename( SFN).Come puoi immaginare, all'epoca c'erano ancora molte app basate su DOS e c'erano pochissimi mal di testa che cercavano di far sì che i nuovi LFN e gli SFN legacy giocassero bene l'uno con l'altro. Se hai mai incontrato un vecchio dischetto o un CD-ROM con file stranamente troncati( come abcdef ~ 1.txt) quel nome di file è stato abbattuto da qualche SFN-usando l'applicazione legacy da un LFN più lungo e non supportato( come abcdefghijk.testo).
Siamo molto lontani dalla metà degli anni '90, tuttavia, e l'intera faccenda Long Filename è( per la maggior parte) risolta con fermezza. Se stai utilizzando una versione di Windows degli ultimi 10 anni, probabilmente non avrai mai nemmeno incontrato un conflitto di lunghezza del nome del file come in passato ci siamo imbattuti nei giorni DOS / Windows 95.Detto questo, ci imbattiamo ancora nel singhiozzo, come hai scoperto con il tuo progetto di pulizia del disco. Ma perché?Se il sistema Long Filename di Windows supporta cartelle e nomi di file fino a 255 caratteri per componente, a quale parete stai andando? Non possiamo incolpare NTFS( il filesystem utilizzato dalla maggior parte delle moderne macchine Windows) poiché NTFS supporterà un concatenamento di cartelle e nomi di file fino a una lunghezza totale del percorso di 32.767 caratteri. Questo supera di gran lunga la tipica struttura di directory che la maggior parte degli utenti avrebbe mai avuto bisogno.
Dove tutto cade a pezzi è una restrizione artificiale che Windows impila sul sistema LFN / NTFS: la variabile MAX_PATH.La variabile MAX_PATH specifica che una struttura di directory completa in Windows non può superare i 260 caratteri totali, inclusa la lettera di unità, i due punti, il backslash e il gioco nullo alla fine. Pertanto, hai solo un potenziale MAX_PATH reale di 256 caratteri, ad es. C: \ your-256-character-path \ .
Quindi quello che è successo quando stavi pulendo il tuo computer è che avevi una directory con un percorso già lungo( o perché i nomi delle cartelle erano lunghi, i nomi dei file erano lunghi, o entrambi), e quando provavi a spostare uno o piùdi quelle directory in un'altra directory con un percorso lungo, la lunghezza totale del nome del percorso ha superato il limite di 260 caratteri imposto dalla variabile MAX_PATH.
Ora, potresti pensare "Ah-hah! Cambiamo semplicemente la variabile MAX_PATH e risolviamo il problema! "Ahimè, non è così semplice. Non solo la variabile MAX_PATH è essenzialmente codificata in Windows, ma anche se hai affrontato l'enorme seccatura di cambiarla, finiresti per rompere così tanto che non ne varrebbe la pena. Troppe applicazioni si aspettano che la variabile del percorso sia ciò che Windows ha specificato da tempo. Non possiamo andare in giro cambiandolo senza creare un enorme casino.
Dove ti lascia? Bene, la soluzione più semplice è semplicemente modificare i dati del percorso. Ad esempio, se hai un sacco di articoli salvati in cui l'applicazione / l'estensione che hai usato per salvarli dal web ha creato una directory che era il titolo completo dell'articolo + il lead dell'articolo, e quindi il nome del file stesso è il titolo completodell'articolo + lead dell'articolo, sarebbe davvero semplice colpire o superare MAX_PATH con un solo salvataggio. Modificare questi enormi titoli di cartelle e articoli in una dimensione più ragionevole è un modo semplice per risolvere il problema.
Se si dispone di un numero elevato di file con un percorso lungo e non si desidera modificarli tutti( o se si desidera eliminare una tonnellata di vecchie directory troppo lunghe per Windows da gestire quando sono limitate dalMAX_PATH variabile), c'è un comando da aggirare. Anche se Windows è limitato dalla variabile MAX_PATH, i tecnici di Windows hanno realizzato che ci sarebbero state situazioni in cui gli utenti avrebbero dovuto occuparsi di nomi di percorso più lunghi. In quanto tale, l'API di Windows ha una funzione per gestire percorsi estremamente lunghi.
Per approfittare di tale API e utilizzare gli strumenti della riga di comando sulle tue ingombranti cartelle / nomi di file, è sufficiente aggiungere il nome della directory con alcuni caratteri extra. Ad esempio, se hai una struttura di directory enorme che desideri eliminare( ma hai ricevuto un errore a causa della lunghezza del percorso quando lo hai provato), puoi modificare il comando da:
rmdir c: \ documents \ some-really-super-long-folder-name-scheme \
a:
rmdir \\? \ c: \ documents \ schema-veramente-super-lungo-cartella-nome \
La chiave è l'aggiunta della parte \\? \prima dell'inizio del percorso del file;ciò indica a Windows di ignorare le limitazioni imposte dalla variabile MAX_PATH e di interagire con il percorso appena fornito come fornito / compreso direttamente dal file system sottostante( che può chiaramente supportare un percorso più lungo).Come sempre, fai attenzione al prompt dei comandi per evitare di cancellare accidentalmente file o directory che intendi lasciare intatti.
Se la nostra panoramica di questo problema ti incuriosisce, consulta questo articolo dalla libreria della rete degli sviluppatori Microsoft, denominando file, percorsi e spazi dei nomi, per ulteriori informazioni su cosa sta succedendo sotto il cofano.
Hai una domanda tecnica urgente? Mandaci una mail a [email protected] e faremo del nostro meglio per rispondere.