Risolvere l’errore di Windows: Percorso di destinazione troppo lungo

Hai cercato disperatamente di spostare o eliminare un file, solo per trovarti di fronte a un frustrante messaggio di errore che dice “Percorso di destinazione troppo lungo”? Questo famigerato errore è più comune di quanto tu possa pensare, trasformando le più semplici operazioni di gestione dei file in un labirinto digitale.

Ma non temere! In questo tutorial, imparerai strategie testate sul campo per sconfiggere il dilemma del “Percorso di destinazione troppo lungo”.

Ora, se sei stanco di sentirti come se il tuo computer si stesse facendo desiderare, resta qui per liberarti di questo fastidioso messaggio di errore di Windows!

Prerequisiti

Prima di affrontare l’errore del “Percorso di destinazione troppo lungo”, assicurati di essere ben attrezzato per il viaggio con quanto segue:

  • A Windows computer – This tutorial uses Windows 10 for demonstrations.
  • PowerShell 5.1 o successivo – Questo tutorial utilizza PowerShell 7.4.0.
  • Permessi di amministratore.
  • Installazione di 7-zip – Questo tutorial utilizza 7-zip 23.01, l’ultima versione al momento della scrittura.

Svelare il mistero dell’errore “Percorso di destinazione troppo lungo”

Questo messaggio criptico, “Percorso di destinazione troppo lungo”, come quello di seguito, si verifica spesso a causa del limite MAX_PATH, un vincolo storico profondamente radicato nei sistemi di file di Windows. Il limite MAX_PATH, fissato a 260 caratteri, è stata una sfida duratura per gli utenti che si occupano di directory profondamente nidificate, strutture di cartelle intricate e nomi file lunghi.

Demonstrating the “Destination Path Too Long” error

In questo tutorial, scoprirai le complessità del limite MAX_PATH e svelerai strategie pratiche per superare questa limitazione.

Riduzione della lunghezza del percorso del file rinominando la cartella principale

Immagina che il tuo computer decida improvvisamente di canalizzare il suo Shakespeare interiore e dichiari: “Spostarsi o non spostarsi, questo è il dilemma.” Ma seriamente, se hai grattato la testa su questo intoppo di Windows, una delle soluzioni di base è rinominare la cartella principale.

Supponiamo che tu abbia una cartella (contenente file importanti) con un nome lungo che desideri spostare o copiare in un’altra posizione. Rinominare la cartella principale aiuterà a evitare l’errore “Percorso di destinazione troppo lungo”.

Per vedere come funziona la riduzione della lunghezza del percorso del file, segui questi passaggi:

1. Trova la cartella con il percorso lungo, come mostrato di seguito, dove il nome della cartella è una serie di lettere e numeri casuali.

Uno dei principali colpevoli dietro questo messaggio enigmatico è il limite di MAX_PATH (260 caratteri) imposto dal sistema operativo Windows. Questo limite serve a mantenere la compatibilità tra varie applicazioni e sistemi.

Locating the folder with a long name

2. Rinomina il nome della cartella con uno più corto (ad esempio, Backup-01).

Renaming the folder

3. Ora, copia o sposta la cartella rinominata nella posizione preferita e verifica se ottieni ancora l’errore “Percorso di destinazione troppo lungo”.

Copying or moving the renamed folder to a different location

Eseguire Operazioni sui File su Percorsi di File Lunghi tramite 7-zip

Se modificare il nome della cartella o del file non è una considerazione critica, un rimedio rapido sarebbe rinominarli, il che evita l’errore “Percorso di destinazione troppo lungo”.

Ma se preservare i nomi esistenti è fondamentale, c’è un approccio valido senza causare l’errore? Sì, sfruttando 7-zip, un robusto strumento di compressione e archiviazione file.

Per eseguire operazioni sui file su percorsi di file lunghi tramite 7-zip, completa i passaggi seguenti:

1. Avvia il gestore di file 7-zip dal menu Start o dal collegamento sul desktop.

2. Successivamente, individua e fai clic destro sul file o sulla cartella di destinazione e scegli un’operazione file dal menu contestuale. Ma in questo esempio, copia il file (Copia In) in un’altra posizione.

Nota che il file di testo ha un percorso di file ridicolmente lungo.

Locating the target file or folder in 7-zip

3. Naviga nella posizione di destinazione del file nella finestra di dialogo e clicca su OK per confermare la copia del file.

7-zip ignora le restrizioni di Win32API sulle lunghezze massime dei percorsi, il che ti consente di eseguire operazioni sui file e sulle directory.

Setting the file’s destination

4. Infine, vai alla posizione di destinazione e verifica che il file che hai copiato esista.

Questo risultato conferma che hai copiato il file con successo, bypassando il limite MAX_PATH tramite 7-zip.

Verifying the file copied via 7-zip exists in the target location

Abilitare il supporto per percorsi lunghi di Win32 su Windows

Forse preferisci soluzioni basate su Windows anziché affidarti a strumenti di terze parti come 7-zip quando si tratta di percorsi di file lunghi. In tal caso, l’abilitazione del supporto per percorsi lunghi di Win32 su Windows offre un approccio nativo e integrato per superare l’errore noto come “Percorso di destinazione troppo lungo”.

Sbloccando il supporto per percorsi lunghi di Win32, permetti al tuo sistema Windows di gestire elegantemente percorsi di file lunghi senza bisogno di applicazioni esterne. Questa funzionalità offre una soluzione su misura che si allinea alle tue preferenze per le funzionalità native di Windows.

Continua a leggere e scopri diversi metodi per abilitare il supporto per percorsi lunghi di Win32.

Utilizzando l’Editor del Registro

Un modo per abilitare il supporto per percorsi lunghi di Win32 consiste nell’utilizzare l’Editor del Registro. Questo centro di controllo digitale agisce come il cuore pulsante del tuo sistema Windows, consentendoti di regolare le impostazioni con precisione.

Per abilitare il supporto per percorsi lunghi di Win32 tramite l’Editor del Registro, procedi come segue:

1. Apri la finestra Esegui (Win + R), digita regedit e premi Invio (o fai clic su OK) per avviare l’Editor del Registro.

Launching the Registry Editor via the Run dialog

? IMPORTANTE: Prima di apportare modifiche nell’Editor del Registro, crea un backup del registro. Questo backup è una protezione che ti permette di ripristinare il registro in caso di complicazioni o problemi imprevisti.

2. Naviga nella seguente chiave o incolla la chiave nella barra degli indirizzi per accedere alle varie impostazioni e configurazioni relative al comportamento del sistema di file.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Accessing settings and configurations related to the file system behavior

3. Cerca e fai doppio clic sull’ingresso LongPathsEnabled (pannello destro) per accedere ai dati associati e cambiare il Valore dati da 0 a 1.

Questo ingresso indica al sistema di abilitare il supporto dei percorsi lunghi Win32.

Enabling the Win32 long path support via the LongPathEnabled entry in Registry Editor

4. Esci dall’Editor del Registro e riavvia il sistema Windows per applicare le modifiche.

5. Ora, esegui operazioni sui file come copiare o spostare file o cartelle con percorsi di file lunghi per verificare se puoi evitare l’errore “Percorso di destinazione troppo lungo”.

? Purtroppo, al momento della stesura di questo testo, l’Esplora risorse nativo in Windows 10 e Windows Server 2022 presenta ancora limitazioni nel supporto dei percorsi lunghi NTFS. Se lavori spesso su percorsi di file lunghi nel tuo flusso di lavoro, ci sono gestori di file di terze parti gratuiti a cui puoi rivolgerti, come OneCommander e TotalCommander.

Utilizzando l’Editor della policy di gruppo (GPE)

Immersi nelle complessità dell’abilitazione del supporto per i percorsi lunghi Win32 si scoprono una miriade di approcci, e tra i più raffinati c’è l’utilizzo del GPE. Pensate al GPE come al vostro kit su misura per ottimizzare le funzionalità di Windows.

Quando si potenzia il sistema con capacità di percorso estese, il GPE occupa il centro della scena, offrendo un metodo centralizzato e sistematico.

Per abilitare il supporto per i percorsi lunghi Win32 tramite GPE, eseguire quanto segue:

1. Aprire il GPE (gpedit.msc) tramite la finestra Esegui, come mostrato di seguito.

Il GPE è un componente aggiuntivo della Console di gestione Microsoft (MMC) che fornisce un’interfaccia grafica per la gestione delle impostazioni di policy in Windows.

Opening the GPE via the Run dialog

2. Successivamente, iniziare ad abilitare il supporto per i percorsi lunghi Win32 nella finestra principale del GPE nel seguente modo:

  • Navigare su Configurazione computerModelli amministrativiSistemaFile system nell’albero della console (pannello a sinistra). Ciò consente di accedere alle impostazioni di policy relative al filesystem.
  • Cercare e fare doppio clic sull’impostazione di policy Abilita i percorsi lunghi Win32 (pannello a destra). Compare una finestra di configurazione per l’impostazione di policy selezionata (passaggio tre).
Accessing the configuration dialog for the “Enable Win32 long paths” policy setting

3. Successivamente, scegliere l’opzione Abilitato nella finestra di configurazione e fare clic su OK per abilitare il supporto per i percorsi lunghi Win32 per Windows.

Enabling the Win32 long paths support for Windows via GPE

4. Ora, copiare o spostare file o cartelle con percorsi di file lunghi per testare il supporto per i percorsi lunghi Win32.

Creazione di collegamenti simbolici per percorsi lunghi

Oltre ad abilitare il supporto per i percorsi lunghi Win32, un’altra opzione per bypassare i vincoli dei percorsi dei file lunghi è creare i tuoi collegamenti digitali, ovvero i collegamenti simbolici.

Creare un collegamento simbolico è come inserire una porta nascosta nel tuo archivio. Aprila e troverai una corsia preferenziale per i tuoi file senza compromettere la struttura esistente.

Per creare collegamenti simbolici per percorsi lunghi, segui i seguenti passaggi:

1. Avvia Prompt dei comandi come amministratore, ed esegui il seguente comando mklink per creare un collegamento simbolico a una directory (/D) nel percorso di destinazione specificato (ad esempio, C:\collegamento-cartella).

Il collegamento simbolico punterà alla tua cartella con un percorso eccessivamente lungo. Pertanto, sostituisci <symlink> con il percorso di destinazione e <long-path> con il tuo percorso lungo.

mklink /D <symlink> <long-path>
Creating a symbolic link for a folder

2. Successivamente, esegui il comando dir seguente per verificare se il tuo collegamento simbolico alla directory esiste.

dir <symlink>
Checking if the directory symbolic link exists

3. All’interno della tua cartella con il percorso lungo, crea un file di testo chiamato symlink.txt, che serve come prova del funzionamento del tuo collegamento simbolico.

? In questo tutorial viene utilizzato un gestore di file di terze parti chiamato Directory Opus, simile a XYplorer. Entrambi sono gestori di file ricchi di funzionalità progettati per migliorare l’esperienza di gestione dei file su Windows.

Creating a text file to serve as proof that the symbolic link works

4. Infine, individua e naviga all’interno del link simbolico appena creato nel tuo gestore di file per confermare che punti alla cartella del tuo percorso lungo.

Ora puoi copiare o spostare i file nella tua cartella di destinazione, ignorando il limite MAX_PATH.

Verifying the directory symbolic link points to the long path folder

Utilizzo del Comando Robocopy per Operazioni sui File

Forse la creazione di un collegamento simbolico non fa parte del tuo piano, ma stai cercando un’operazione diretta sui file, come copiare file da e verso cartelle con percorsi di file lunghi. In tal caso, avrai bisogno di Robocopy, una potente soluzione per trasformare i tuoi problemi di trasferimento file in un’esperienza senza soluzione di continuità.

Per eseguire operazioni sui file tramite il comando Robocopy, procedi con questi passaggi:

1. Apri PowerShell come amministratore ed esegui i seguenti comandi per dichiarare le variabili che conterranno i percorsi di origine e destinazione del tuo file di destinazione.

Questi comandi non hanno output, ma assicurati di sostituire i segnaposto <sorgente> e <destinazione> di conseguenza.

$srcPath=<source>
$destPath=<destination>
Declaring variables to hold the target file’s source and destination paths

2. Successivamente, esegui il comando robocopy qui sotto per copiare il file symlink.txt e tutte le sue informazioni (/COPYALL) dalla sorgente ($srcPath) alla destinazione ($destPath).

Questo comando assicura che il file di destinazione venga copiato senza attendere (/W:0) o ritentare (/R:0) in caso di errori durante l’operazione di copia.

robocopy $srcPath $destPath symlink.txt /COPYALL /W:0 /R:0

? Forse desideri spostare il file in una posizione diversa. In tal caso, sostituisci /COPYALL con l’opzione /MOVE, come mostrato di seguito. Questa opzione dice a robocopy di eseguire un’operazione di “taglia e incolla”.

robocopy $srcPath $destPath symlink.txt /MOVE /W:0 /R:0

L’output qui sotto conferma che hai copiato con successo un file indipendentemente dal percorso lungo.

Copying a file via the robocopy command bypassing the MAX_PATH limit

3. Ora, esegui il cmdlet Get-ChildItem qui sotto per verificare che il file copiato esista nella posizione specificata.

Get-ChildItem $destPath
Verifying the copied file exists in the specified location

Sfruttando il parametro -LiteralPath nei cmdlet di PowerShell

Hai già sfruttato il potere di Robocopy per navigare nei percorsi intricati della gestione dei file. Tuttavia, rimane una domanda persistente: come puoi migliorare ulteriormente il controllo e la precisione nella gestione delle operazioni sui file?

PowerShell offre cmdlet con parametri, come -LiteralPath, che ti consentono di conquistare le complessità della gestione dei file.

Per eseguire operazioni sui file utilizzando il parametro -LiteralPath, esegui quanto segue:

1. Apri PowerShell come amministratore ed esegui i seguenti comandi per dichiarare le variabili che conterranno il percorso del file sorgente e i percorsi di destinazione.

Assicurati di sostituire <sorgente\symlink.txt> con il percorso completo del tuo file e <destinazione> con il percorso di destinazione preferito.

$srcPath=<source\symlink.txt>
$destPath=<destination>

2. Successivamente, esegui il comando Copy-Item di seguito per copiare il file symlink.txt nella destinazione specificata ($destPath). Il parametro -LiteralPath ti permette di specificare il percorso del file in modo letterale, senza interpretare alcun carattere jolly.

Questo comando, quando eseguito con successo, non mostra alcun output sulla console, ma verificherai il risultato nel passaggio successivo.

Copy-Item -LiteralPath $srcPath -Destination $destPath

? Quando necessario, il parametro -LiteralPath funziona anche con altri cmdlet per operazioni sui file, come ad esempio Move-Item, Rename-Item e Remove-Item.

3. Infine, esegui il comando Get-ChildItem sottostante per elencare i file e le cartelle nel percorso di destinazione ($destPath).

Get-ChildItem $destPath
Verifying the file has been copied successfully to the destination path

? Sebbene il parametro -LiteralPath funzioni eccellentemente come fa, è principalmente utilizzato per specificare il percorso di origine o il nome del file. Ma in scenari di scripting, -LiteralPath assicura che lo script operi sui percorsi specificati, riducendo il rischio di errori dovuti a interpretazioni impreviste dei caratteri.

Estrazione di file dall’archivio tramite il comando Expand-Archive

Supponiamo tu abbia scaricato un file di archivio (ZIP) con un nome eccessivamente lungo che desideri estrarre senza modificarlo. In tali casi, il comando Expand-Archive di PowerShell può essere una soluzione pratica.

Il comando Expand-Archive consente di decomprimere o estrarre file da un archivio fornendo al contempo la flessibilità per gestire percorsi lunghi.

Per estrarre file archivio sfruttando il comando Expand-Archive, esegui quanto segue:

1. Esegui i seguenti comandi in PowerShell (come amministratore) per dichiarare le variabili che conterranno il percorso completo del tuo file archivio e il percorso di destinazione.

$srcPath=<source\file.zip>
$destPath=<destination>

2. Con le variabili dichiarate, esegui il seguente comando Expand-Archive, il quale non fornisce output ma estrae il file archivio nella destinazione specificata.

Expand-Archive -Path $srcPath -DestinationPath $destPath

3. Infine, esegui il comando Get-ChildItem qui sotto per visualizzare l’elenco dei file e delle cartelle all’interno del percorso di destinazione ($destPath).

Get-ChildItem $destPath

Nota due elementi nell’output: il file archivio (testo in rosso) e la cartella estratta (evidenziata in blu). Questo output conferma che hai estratto con successo il tuo file archivio senza causare l’errore “Percorso di Destinazione Troppo Lungo”.

Verifying the contents of the destination path

Conclusioni

Durante questo percorso, hai esplorato un arsenale di strategie per superare il famigerato errore “Percorso di Destinazione Troppo Lungo” su Windows. Hai esaminato varie tecniche, dal rinominare le cartelle principali alla potenza di 7-zip e all’abilitazione del supporto per percorsi lunghi Win32.

I collegamenti simbolici offrono una soluzione intelligente, e il potente Robocopy ha dimostrato la sua abilità nelle efficienti operazioni sui file. La tua incursione in PowerShell ha messo in mostra l’utilità del parametro -LiteralPath e del comando Expand-Archive. Tutti questi si sono rivelati preziosi per estrarre file senza cedere alle restrizioni sulla lunghezza del percorso.

Ora, perché non considerare la possibilità di combinare queste strategie per creare soluzioni robuste adatte alle tue sfide specifiche? Sperimenta lo scripting in PowerShell, integra i collegamenti simbolici dove necessario e perfeziona le tue operazioni sui file con Robocopy.

Ricorda, la chiave non sta solo nel risolvere il problema immediato, ma anche nel capire come questi metodi possano lavorare armoniosamente per affrontare una serie di sfide legate ai file.

Source:
https://adamtheautomator.com/destination-path-too-long/