2009-09-23 15:56:39 +0000 2009-09-23 15:56:39 +0000
203
203

Come cancellare un file in Windows con un nome di file troppo lungo?

Mia moglie ha diversi file e cartelle che in qualche modo hanno finito per avere nomi di file che li hanno resi non cancellabili (non possono essere cancellati) con mezzi normali o tramite la riga di comando. Credo che i nomi dei file siano troppo lunghi a causa della profondità delle strutture delle cartelle. Qualcuno è a conoscenza di una buona utilità per la pulizia di file come questo?

Risposte (8)

428
428
428
2012-08-29 13:38:16 +0000

Quando si vuole cancellare completamente una directory e contiene lunghi percorsi, robocopy fa un MOLTO buon lavoro:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

Questo funziona perché robocopy internamente [ utilizza le versioni Unicode-aware delle funzioni Win32, con il prefisso \?Quando si vuole cancellare completamente una directory e contiene lunghi percorsi,robocopy` fa un MOLTO buon lavoro:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

Questo funziona perché robocopy internamente utilizza le versioni Unicode-aware delle funzioni Win32, con il prefisso per i percorsi dei file ; queste funzioni hanno un limite di 2¹⁶-1 (32.767) caratteri invece di 259.

Potrebbe essere necessario passare attraverso questo processo più di una volta per eliminare tutti i file.

91
91
91
2009-09-23 16:01:40 +0000

Da un prompt di comando:

dir /X
``` ```
del LONGF~1.txt

Questo elencherà i vostri file/cartelle in formato nome breve. Poi usate il nome breve esattamente come è stato scritto per cancellare il file:

&001

53
53
53
2009-09-23 17:40:55 +0000

Lavoro progressivamente nel percorso, rinominando ogni successiva cartella madre in “1” e cercando di cancellarla. Ogni volta il percorso viene effettivamente accorciato e non ho mai dovuto lavorare per più di 4 o 5 directory fino a quando non sono finalmente in grado di cancellare l'intera struttura delle directory (che può essere o meno quello che si vuole). Potreste farlo anche dall'ultima cartella dei bambini e lavorare in alto o in basso.

13
13
13
2009-09-23 16:12:29 +0000

In alcuni programmi, tra cui Command Prompt (cmd.exe), è possibile aggirare il limite di lunghezza del file, impostando il percorso completo con il prefisso \.In alcuni programmi, tra cui Command Prompt (cmd.exe`), è possibile aggirare il limite di lunghezza del file, impostando il percorso completo con il prefisso in questo modo:

\.\C:\some directory\other directory\a file with long name
13
13
13
2012-02-21 17:18:15 +0000

Un trucco che ho usato per aggirare la limitazione della lunghezza del “percorso completo e del nome del file” al fine di spostare, copiare o cancellare qualcosa è quello di accorciarlo ‘rompendo’ a metà (o più) utilizzando una lettera di unità mappata che punta ad una cartella lungo il percorso.

in modo da avere c:\½ percorso lungo…\e \foo \cartelle \cartelle \cartelle \cartelle \cartelle \cartelle.txt.

Poi mappare una lettera di unità arbitraria in qualche punto lungo il percorso in modo che il primo pezzo del percorso diventi lungo solo pochi caratteri. Pre-requisito: la cartella deve essere in una cartella condivisa (cosa che può già essere se si trova su un server, che è dove ho avuto bisogno di farlo), e se non lo è già, allora scegliete una cartella da qualche parte nel percorso e condividetela. A seconda del vostro ambiente e del vostro livello di paranoia, permettete a tutti di modificare l'accesso alla condivisione purché i permessi NTFS siano ragionevolmente restrittivi. Se si desidera, è sufficiente consentire i diritti di modifica solo al proprio account.

Ora andate nella cartella condivisa o in una all'interno di essa e condividetela, oppure usate la riga di comando come segue. Supponiamo che la cartella condivisa “foo” come “fooshare”, allora si potrebbe fare

net use x: \mycomputername\fooshare\bar\folders /persistent:no

e l'unità X: ora punta direttamente alla cartella “cartelle” all'interno di quella condivisione, quindi “x:\oldfiles\myoldfile.txt” è ora piuttosto breve.

(Il “/persistent:no” significa che questo non sopravviverà al prossimo riavvio e vi confonderà in seguito. Non dimenticate di decomprimere la vostra cartella quando avete finito)

Ricordate, non dovete necessariamente condividere la cartella contenente il file, se è già all'interno di una cartella condivisa potete semplicemente mappare tramite la condivisione e le cartelle annidate in una cartella di destinazione vicina al file e questo funziona bene.

Ho dovuto usare questa tecnica facendo una massiccia robocopia tra due server quando ci siamo resi conto che gli utenti avevano mappato i drive abbastanza in profondità nella struttura delle cartelle, quindi erano stati in grado di usare 255 caratteri da lì, ma che superavano la lunghezza totale del percorso del file quando vi si accedeva dalla root del drive locale.

9
9
9
2009-09-23 15:59:00 +0000

Il modo più semplice che ho trovato è quello di avviare da un CD live ubuntu.

In alternativa è possibile creare una cartella condivisa a metà del percorso e poi mappare un'unità di rete su quella e fare la cancellazione dalla cartella mappata (anche sulla stessa macchina)

5
5
5
2009-09-23 19:39:20 +0000

Rinominare la directory di taglia e incolla il file da qualche altra parte, quindi cancellarlo. Funziona qui.

O semplicemente dal prompt dei comandi, se non avete voglia di passare il guaio.

1
1
1
2009-09-23 16:00:00 +0000

Probabilmente non è il modo migliore e sono interessato a vedere cosa ne escono gli altri -

L'ho avuto una volta e ho provato alcune cose senza fortuna. Invece di cercare un buon strumento, ho riavviato con il disco di Windows, sono andato alla console di recupero e l'ho semplicemente cancellato da lì. Ha funzionato la prima volta e davvero bene!

Inoltre, ho appena fatto un Google per voi e ho trovato questo - DelinvFile Sembra buono ma non posso garantire per questo.

Edit - Attenzione, appena visto quanto sopra è solo una prova - Forse non così buono come pensavo!