Come eliminare un file con un percorso troppo lungo per essere eliminato [duplicato]


203

Stavo lavorando con un codice sorgente di computer vision che ho trovato e non mi rendevo conto che crea un file cache che ha un nome MOLTO LUNGO e ora non riesco a eliminarne 2.

Ho provato a rinominarlo con un nome più breve ma non posso fare nulla per il file, ho anche provato a riavviare il mio computer e vedere se sarebbe semplicemente andato via.

Il messaggio di errore dice:

Percorso di destinazione troppo lungo.

I nomi dei file sarebbero troppo lunghi per la cartella di destinazione. È possibile abbreviare il nome del file e riprovare oppure provare un percorso con un percorso più breve.

immagine dello schermo

Come posso eliminare i file in questo caso?


Funzionerebbe dalla riga di comando con il delcomando? Qualcosa del genere del *.cachedovrebbe eliminare tutti i file .cache nella directory corrente.
Ryan,

"Path \ to \ folder \ CACHEI ~ Il sistema non è riuscito a trovare il file specificato" ha detto due volte e ci sono 2 file lì dentro ma non ha fatto nulla
Chris,

Ripensandoci, potresti controllare una delle altre domande a cui è già stata data una risposta. Questo per esempio.
Ryan,

1
Se questi due file sono i soli rimasti nella directory, allora potresti avere più fortuna a cancellare l'intera directory. Dal prompt dei comandi, prova rd /s directoryname Questo cancellerà directorynamee tutti i file / le sottodirectory al suo interno, quindi
usalo

Risposte:


353

Supponendo che tu sia su Windows:

Quello che faccio sempre è usare subst per creare un'associazione di lettere di unità con parte del percorso.

Quindi vai alla nuova lettera di unità e passa ai file con nomi lunghi. Ora dovresti essere in grado di rinominarli / eliminarli / ecc. Il motivo per cui funziona è perché il percorso stesso non contiene più> 255 caratteri.

Per creare una cartella secondaria

  1. Avvia un prompt dei comandi (non sono necessari privilegi di amministratore)
  2. Usa cdper navigare nella cartella che vuoi andare (puoi usare tabper completare automaticamente i nomi
  3. digitare subst j: .per creare l'associazione driveletter. (invece di. puoi anche digitare l'intero percorso)
  4. Ora in Explorer, hai una nuova lettera di unità in questo PC . Vai su di esso e fai tutto ciò che devi fare per i file .cache.
  5. Torna alla finestra cmd e digita subst /d j:per rimuovere l'unità o, in alternativa, riavvia il PC.

EDIT: un trucco che ho imparato che può abbreviare un po 'questo. Dalla finestra di Explorer in cui si verificano problemi, fare clic sulla barra degli indirizzi in modo da poterlo digitare, quindi digitare cmde premere Enterper avviare un prompt dei comandi in quella posizione, quindi procedere al passaggio 3. :)

EDIT2: Okay, questo trucco può essere ulteriormente ampliato. Se sei in explorer sulla strada giusta, digita semplicemente nella subst j: .barra degli indirizzi e premi Invio. Apparirà una finestra di comando, eseguirà il comando e si chiuderà di nuovo, ed ecco fatto, una nuova unità si aprirà in Explorer.


26
robocopy empty_dir base_nested_dir / spurgo - basta creare una directory vuota, e dire robocopy per eliminare tutto nella directory di destinazione, che non si trova nella directory vuota stackoverflow.com/a/3320317/588759
rofrol

7
Ho appena provato questo e non sono riuscito a rimuovere il file in questione .. Uso Cygwin con Windows, una soluzione alternativa è quella di rimuovere il file in questo modo: rm -R / percorso / in / domanda fintanto che nessun altro programma utilizza il file sei a posto
John

1
Ho avuto un problema in cui SUBST non riconosceva J: come parametro (inoltre non vedeva alcuna unità virtuale disponibile), quindi l'opzione cygwin menzionata da John ha funzionato bene.
Tisch

1
@rofrol, dovresti fare in modo che il tuo commento di robocopy risponda: è molto più semplice che seguire l'approccio con i nomi di directory quando hai a che fare con molte directory secondarie (come quelle create in node_modules)
Andy Brown,

1
La soluzione di John ha funzionato molto bene per me, ho appena aggiunto il -f (parametro force): rm -R -f / pathToDelete
Christophe Keller

67

La tua domanda chiede come eliminare un file quando il nome file stesso è troppo lungo. Se il percorso è troppo lungo e non solo il nome file stesso, puoi semplicemente rinominare le cartelle per accorciare il percorso.

Ma per eliminare un file il cui nome è più di 255 caratteri:

  • Aprire un prompt dei comandi eseguendo "CMD.EXE"
  • Passare alla cartella che contiene il file
  • Utilizzare il comando DIR / X che visualizzerà i nomi brevi dei file.
  • Elimina usando il nome breve.

cioè se il file è chiamato "verylongfilename.fil", il nome breve verrà visualizzato come qualcosa di simile a "verylo ~ 1.fil" e puoi eliminarlo usando quel nome.

Si noti che sebbene Windows stesso sia in grado di gestire percorsi molto più lunghi di 255 caratteri, la maggior parte della GUI - come Windows Explorer - è vincolata dal limite più breve.


16
Questa è una risposta migliore di quella accettata.
Ben

3
La risposta scelta è migliore perché puoi eliminare intere cartelle con quel metodo
mcont

2
ma in Windows 7 sembra che DIR / x non cambi affatto alcun display qui ... :(
gumuruh

3
Alcuni filesystem NTFS NON hanno 8,3 equivalenti. Quindi non sempre funziona più.
Ross Presser,

Del / S di CMD ha funzionato per me anche con un nome grosso su 8.
Jeff,

4

Googled: elimina il nome file lungo Primo risultato

Usa Unlocker http://www.filehippo.com/download_unlocker/

Impossibile eliminare la cartella: viene utilizzato da un'altra persona o programma Impossibile eliminare il file: accesso negato Si è verificata una violazione della condivisione. Il file di origine o di destinazione potrebbe essere in uso. Il file è in uso da un altro programma o utente. Assicurarsi che il disco non sia pieno o protetto da scrittura e che il file non sia attualmente in uso.

Unlocker può aiutare! Fai semplicemente clic con il pulsante destro del mouse sulla cartella o sul file e seleziona Unlocker. Se la cartella o il file è bloccato, verrà visualizzato un elenco di armadietti. Basta fare clic su Sblocca tutto e il gioco è fatto!


1
L'ho visto, ma non sapevo se lo sblocco fosse sicuro da usare, quindi l'ho ignorato, lo proverò. EDIT: non ha funzionato. funziona su altri file ma lo sblocco non appare nel menu a discesa
Chris,

Certamente il modo più semplice per farlo, anche se potrebbe essere necessario un riavvio per il completamento. Niente di sbagliato in Unlocker: lo uso da anni ed è un'utilità molto utile. Nel caso di un file o una cartella il cui percorso è troppo lungo, non troverà alcun handle di blocco ma dovrebbe offrire l'opzione Elimina nel menu a discesa in seguito.
Steve Pettifer,

1
Ha funzionato alla perfezione - la cosa divertente è che ho questo software installato ma non mi è venuto in mente di usarlo in questa situazione.
Daniel Sokolowski il

Non ha funzionato per un'altra cartella in cui ho copiato una cartella di giunzione circolare, ma ciò che ha funzionato è stato rinominare ogni cartella di livello in un carattere come 1tutto il percorso e quindi eliminarlo.
Daniel Sokolowski il

Questa è stata l'unica risposta che ha funzionato per me (sto usando Windows 10). Grazie mille!
user26832

4

Microsoft ha un utile articolo della knowledge base sull'eliminazione di file non cancellabili . La causa n. 4 è rilevante per te.

La soluzione migliore sarebbe probabilmente quella di mappare un'unità sulla cartella in cui si trova il file (risoluzione n. 3), quindi accedere attraverso quell'unità ed eliminarla.


1
Non avevo mai capito prima che potevo "mappare l'unità di rete" su una posizione sul mio disco rigido. Questo è quello che ho fatto in Windows Explorer. Dopo essere passato all'unità, ho potuto facilmente eliminare la cartella e i contenuti. Stesso principio delle soluzioni console mostrate sopra, ma questa è una soluzione GUI rapida che è stata più facile per me.
RandomHandle,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.