Perché Windows segnala che questa cartella è troppo lunga per essere copiata?

Perché Windows segnala che questa cartella è troppo lunga per essere copiata?
Perché Windows segnala che questa cartella è troppo lunga per essere copiata?

Video: Perché Windows segnala che questa cartella è troppo lunga per essere copiata?

Video: Perché Windows segnala che questa cartella è troppo lunga per essere copiata?
Video: Google Titan Security Key Bundle | How to Set Up Advanced Online Protection - YouTube 2024, Aprile
Anonim
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?
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!

So the other day, I was reorganizing some files on my computer, creating folders, that kind of stuff. Then, when I was moving some files into a folder, I get a message, stating that the resulting folder path would be too long. I was confused. I know that every single OS since DOS supports Long Filenames, yet Windows claims that the path is too long? Why does this happen?

Sincerly,

Mr. Disorganized

Il problema che stai incontrando è uno sfortunato incrocio di due sistemi che, in casi come questo, genera 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 di Long Filename è (per la maggior parte) saldamente risolta. 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 Windows si sovrappone al 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 caratteri-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ù 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 problema di cambiarla, finiresti per romperti 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 completo dell'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 desideraElimina una tonnellata di vecchie directory troppo lunghe per essere gestite da Windows quando sono limitate dalla variabile MAX_PATH), esiste una linea di comando da risolvere. 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 da riga di comando sulle tue ingombranti cartelle / nomi di file, devi semplicemente 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 cambiare il comando da:

rmdir c:documentssome-really-super-long-folder-name-scheme

a:

rmdir \?c:documentssome-really-super-long-folder-name-scheme

La chiave è l'aggiunta del

?

porzione 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 ciò che sta succedendo sotto il cofano.

Hai una domanda tecnica urgente? Mandaci una mail a [email protected] e faremo del nostro meglio per rispondere.

Consigliato: