it-swarm-eu.dev

Come eliminare un file in Windows con un nome file troppo lungo?

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

200
user3048

Quando vuoi eliminare completamente una directory e contiene percorsi lunghi, robocopy fa un ottimo lavoro:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

Questo funziona perché robocopy internally utilizza le versioni di Win32 con conoscenza Unicode, con il prefisso \\?\ per i percorsi dei file ; quelle 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 sbarazzarsi di tutti i file.

421
Benoit

Da un prompt dei comandi:

dir /X

Questo elencherà i tuoi file/cartelle in formato nome breve. Quindi utilizzare il nome breve esattamente come scritto per eliminare il file:

del LONGF~1.txt
90
Will Eddins

Progressivamente mi avventuro nel percorso, rinominando ogni cartella genitore successiva in "1" e tentando di eliminare. Stai effettivamente accorciando il percorso ogni volta e non ho mai dovuto lavorare su più di 4 o 5 directory finché non sono finalmente in grado di cancellare l'intera struttura della directory (che può essere o non essere quello che vuoi). Puoi farlo anche dall'ultima cartella figlio e spostarti verso l'alto o verso il basso.

53
joeqwerty

In alcuni programmi, incluso Prompt dei comandi (cmd.exe), è possibile aggirare il limite di lunghezza del file anteponendo il percorso completo con \\.\ in questo modo:

\\.\C:\qualche directory\altra directory\un file con un nome lungo
13
grawity

Un trucco che ho usato per aggirare il limite di lunghezza "percorso completo e nome file" al fine di spostare, copiare o eliminare qualcosa è di accorciarlo interrompendolo a metà (o più) usando una lettera di unità mappata che punta a una cartella lungo il percorso .

quindi hai c:\some\long\path ...\and\foo\bar\folders\oldfiles\myoldfile.txt.

Quindi mappare una lettera di unità arbitraria in un punto lungo il percorso in modo che il primo blocco del percorso diventi solo alcuni caratteri. Pre-requisito: la cartella deve essere in una cartella condivisa (che potrebbe già essere se si trova su un server, che è dove ho avuto bisogno di farlo), e se non lo è già, scegli una cartella da qualche parte nel percorso e condividerlo. A seconda dell'ambiente e del livello di paranoia, consentire a tutti di modificare l'accesso alla condivisione purché le autorizzazioni NTFS siano ragionevolmente restrittive. Se lo desideri, concedi solo i diritti di modifica solo al tuo account.

Ora vai alla cartella condivisa o al suo interno e condividila, oppure usa la riga di comando come segue. Supponi di aver condiviso la cartella "foo" come "fooshare", quindi potresti farlo

Net Use x: \\mycomputername\fooshare\bar\folders /persistent:no

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

("/ Persistente: no" significa che questo non sopravviverà al prossimo riavvio e ti confonderà più avanti. Non dimenticare di annullare la condivisione della cartella quando hai finito.)

Ricorda, non devi necessariamente condividere la cartella che contiene il file, se è già all'interno di una cartella condivisa puoi semplicemente mappare through la condivisione e le cartelle nidificate in una cartella di destinazione vicino 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 le unità abbastanza in profondità nella struttura delle cartelle, quindi erano stati in grado di usare 255 caratteri da lì, ma che superava la lunghezza totale del percorso del file quando si accede dalla root dell'unità locale.

13
AdamV

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

In alternativa è possibile creare una cartella condivisa a metà del percorso e quindi mappare un'unità di rete su di essa ed eseguire l'eliminazione dalla cartella mappata (anche sulla stessa macchina)

9
Col

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

O solo dal comando Prompt, se non hai voglia di affrontare il problema.

5
Rook

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

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

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

Modifica - Attenzione, appena visto quanto sopra è solo una prova - Forse non buono come pensavo prima!

1
William Hilsum