Come eliminare le directory con percorso / nomi troppo lunghi per l'eliminazione normale


380

Windows sembra avere un limite di lunghezza per i nomi dei file quando si tenta di eliminare, anche se non impedisce la creazione di tali file.

Il nostro processo di creazione crea una serie di file temporanei (molti basati su un WSDL) che si infrangono a questo limite. Il nostro script ant è in qualche modo in grado di eliminarli quando si esegue un clean, ma a volte ho bisogno di eliminare la directory di workarea (dove vanno tutti i file temporanei) senza effettivamente fare un clean completo da ant.

Questi sono gli stessi errori di questa domanda , ma le risposte lì non funzionano davvero per me dato che ho a che fare con una directory, non un file, e non sempre so quali file o sottodirectory specifici stanno causando il problema. E sto cercando di evitare qualsiasi processo manuale (diverso dall'attivazione di un singolo comando) per eliminarli effettivamente.

Se provo a eliminare la directory da Explorer ottengo l'errore

Cannot delete [file name]: The file name you specified is not valid or too long.  
Specify a different file name

Provare Remove-Itemin PowerShell dà il seguente errore:

Remove-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
At line:1 char:12
+ Remove-Item  <<<< -force -Recurse <directory>

Qualcuno conosce strumenti o modi semplici per aggirare questo errore di eliminazione senza dover trovare manualmente i file problematici e spostarli / rinominarli?


2
Ho trovato la soluzione poco prima di pubblicare questa domanda, ma poiché altri potrebbero incappare in questo ho deciso di pubblicarlo in modo che potessero trovare la soluzione che ho incontrato.
Herms,

Oh, lo so, ma generalmente quando faccio cose del genere lascio la domanda "senza risposta" per un po 'per vedere se qualcun altro ha una soluzione migliore.
Herms,

Di
gran

utilizzando Ubuntuo qualsiasi altro Linux Bootable CDpossiamo avviare il nostro computer Ubuntuo qualsiasi altro sistema operativo per temporaneamente. quindi possiamo selezionare la cartella e possiamo eliminarla facilmente.
Kelum Priyadarshane,

1
Questa domanda più vecchia ha anche alcune risposte interessanti: superuser.com/questions/45697/…
AdamV,

Risposte:


421

Utilizzare il File Manager 7-Zip per eliminarli.

Se i problemi persistono, assicurati di utilizzare Shift+ Deleteall'interno di 7-Zip File Manager. Altrimenti, Windows prova a spostarli nel Cestino (che fallirà di nuovo).


5
Grazie - questo si è sbarazzato di un albero di dir che è diventato un po 'ricorsivo ed era troppo profondo per essere rimosso da del / rmdir / rm / explorer
Martin Beckett

63
ha funzionato benissimo usando shift + Del - 7zip non è stato in grado di inviare file con percorsi lunghi nel cestino ....
cori

66
+1 7zip. Devi andare alla cartella e POI usare shift + Delcome ha detto @cori. Se selezioni l' Deleteopzione dal menu di scelta rapida, fallirà lì. shift + Delesso!
Urda,

8
7zip non ha funzionato per win7 64, quindi Linux ha funzionato.
Erik Friesen,

13
Ho votato questo perché con 7zip puoi eliminare anche una cartella che contiene cartelle nidificate lunghe all'interno. Ho avuto il mio problema con una cartella node_module che conteneva tonnellate di cartelle nidificate e non sono riuscito a rimuoverlo. 7zip riparato dalla cartella di base in modo impeccabile. +1
Gruber,

310

Nessuna delle altre risposte (gratuite) qui ha funzionato per me, ma ne ho trovata una su un altro sito:

rimraf <dir>

rimraf è un pacchetto Node.js , quindi dovrai installare Node.js che include npm . Quindi puoi eseguire:

npm install -g rimraf

Quindi è possibile eseguire rimrafdalla riga di comando.

Ho trovato questa soluzione perché npm stesso stava causando questo problema a causa del modo in cui nidifica le dipendenze.

A proposito, rimrafprende il nome dal comando UNIX rm -rf, che elimina ricorsivamente file e cartelle.


7
Ho provato molti modi. Funziona perfettamente!
Duckegg,

2
La migliore risposta di tutte :) sì, è facile beasy
Al-Mothafar

2
Questa dovrebbe essere la risposta accettata.
NINCOMPOOP

13
La tua soluzione funziona ma è così fottuta che devo usare un modulo js del nodo per cancellare le cartelle dei moduli js del nodo ... Non voglio più vivere su questo pianeta
Benoit P

4
Node ha creato il problema in primo luogo per me così ... interessante ... che hanno anche una soluzione.
Eric J.,

141

Non è necessario installare alcun programma per risolvere questo problema.

Questo problema può essere facilmente risolto utilizzando robocopy, preinstallato da Windows Vista, lanciato nel 2006.

Ad esempio, rmdir /S /Q <dir>in alcuni casi è stato segnalato un errore. Non è necessario utilizzare 7zip o altri strumenti di terze parti. Powershell è eccessivo. Cygwin potrebbe funzionare, ma potresti non averlo installato. Quindi, concentriamoci surobocopy

L'idea è di

  1. usare robocopyper copiare + aggiornato
  2. da una nuova cartella vuota
  3. nella cartella che si desidera eliminare, la destinazione.

Dopo l'esecuzione robocopy, anche la directory di destinazione sarà vuota.

Queste istruzioni sono per la riga di comando. Basta aprire la ricerca in Windows, digitare cmde premere Invio.

Diciamo che l' obiettivo per l'eliminazione è:

C:\delete\this folder\with a very long name

Procediamo come segue:

  1. Per prima cosa crea una directory vuota, fi C:\emptyfolder.

    mkdir C:\emptyfolder
    
  2. Copia + aggiorna dalla directory vuota alla destinazione, usando l'opzione /purge

    robocopy c:\emptyfolder "C:\delete\this folder\with a very long name" /purge
    
  3. Elimina la directory vuota. Non ne hai più bisogno.

    rmdir c:\emptyfolder
    

Poiché non ci sono file o cartelle nella directory di origine ( C:\emptyfolder), elimina semplicemente i file e le cartelle nella directory di destinazione ( C:\delete\this folder\with a very long name) ricorsivamente!

  • Trucco finale: puoi evitare di scrivere a mano

    C:\delete\this folder\with a very long name
    

    Trascinando la cartella da una finestra di Explorer e rilasciandola nella finestra Terminale / cmd.

Fai attenzione : i file eliminati non andranno nella cartella cestino ! Una volta eliminati, i file non possono essere recuperati.

(Tratto da "Percorso troppo lungo? Usa Robocopy" di BVLANGEN )

PS: mi rendo conto che questa risposta era qui, meno didatticamente. Come eliminare un file in Windows con un nome file troppo lungo? [duplicare]

Benoit ha aggiunto:

Potrebbe essere necessario eseguire questo processo più di una volta per sbarazzarsi di tutti i file.


11
Grazie bravo signore !! Questa dovrebbe essere la risposta accettata poiché tutti gli altri o non hanno funzionato o hanno richiesto uno strumento di terze parti . :)
MickyD il

Funziona perfettamente ... non è necessario installare nulla (per quanto ne so) ed è veloce. Questa dovrebbe essere la risposta accettata!
ksumarine,

1
Ciò mantiene parte (o tutto) dell'albero delle directory in "c: \ deletefolder" (directory di destinazione). Ad ogni modo, ho cancellato tutto in un batter d'occhio (suppongo che i file fossero piccoli) e dovevo solo <Del> manualmente "c: \ deletefolder", le directory secondarie sono state rimosse senza problemi. Ha funzionato come un fascino. +1, dovrebbe essere la risposta accettata! :)
rld.

@rld, ma prima esisteva "deletefolder"? Altrimenti, penso che dovrebbe essere vuoto se fosse una nuova directory. Altrimenti è un casino. Potrei aggiungere un ultimo passaggio per "rmdir deletefolder".
hectorpal,

1
Quando si ha a che fare con directory altamente ricorsive, questa opzione è molto più lenta di 7zip. Dopo aver atteso 20 minuti, li ho confrontati e realizzato 7zip, anche se non mostra che i progressi stessero andando 50 volte più veloci.
Andy Gauge,

84

Credo di aver trovato un modo per eliminare le cose da cmd. Inizialmente ho provato il delcomando, ma non ha funzionato. Poi mi sono ricordato rmdir. Procedere come segue:

rmdir /S /Q <dir>

sembra aver funzionato.


105
Non ha funzionato per me. :(
Andrew Arnott, il

ricordati di passare a cmd prima di provare a eseguire rmdir.
brianpeiris,

8
Per coloro che non sono in grado di utilizzare questa soluzione, ho una soluzione alternativa che ha funzionato per me (con percorso / nomi file troppo lunghi): spostare il file / i / directory in C: \ per accorciare il percorso, quindi eliminare da lì.
Anders Sandberg Nordbø,

6
È possibile avere directory per cui questa soluzione non funzionerà, che 7-Zip può eliminare. Mi è appena successo.
SamStephens,

2
Questa soluzione sta ottenendo risultati incoerenti. Per favore, non votarlo.
hectorpal,

29

Lo strumento che ho usato quando ho avuto questo problema era FastCopy . Ho selezionato Elimina tutto dal menu a discesa, ho selezionato la directory che volevo eliminare e ho fatto clic su Elimina tutto .

Schermata della finestra di dialogo di eliminazione di FastCopy

FastCopy è portatile (non è richiesta l'installazione) e sono disponibili versioni a 32 e 64 bit.


3
Se stai cercando uno strumento da riga di comando, potresti utilizzare un piccolo strumento che ho pubblicato su GitHub ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud,

Ho avuto un set ricorsivamente generato di file / cartella nidificati. Questa era l'unica soluzione funzionante
Pierluigi il

2
Questo ha funzionato per me quando, la roba della riga di comando non è riuscita, il tentativo di 7zip fallito. e persino il supporto Microsoft è stato bloccato!
Kit Ramos,

Lo stesso qui - ho iniziato a eliminare i file con 7zip, ma ha anche funzionato in modo molto strano e ho dovuto spostare + Delere ogni directory più volte di seguito per eliminarlo effettivamente, ma poi ho provato questo strumento e ha funzionato come un fascino . Lanciato due volte per sbarazzarsi di tutti i file. Grazie!
Artanis,

Grazie, anche per me l'unica soluzione funzionante, GRANDE !!!!
tim

26

Senza installare software aggiuntivo è possibile utilizzare il substcomando per creare temporaneamente un alias in una directory con nome lungo.

ad es. Se si desidera eliminare la cartella C:\Very long directory\that exceed\length limit\blah blah blah\abcde\folder to be deletedè possibile utilizzare il comando

subst x: "C:\Very long directory\that exceed\length limit\blah blah blah\abcde"

e quindi è possibile eliminare facilmente X:\folder to be deletedin Esplora risorse o nel prompt dei comandi. Per rimuovere l'alias di lettera di unità temporanea, utilizzare il comando

subst x: /d

Ho provato tutte le altre risposte (comprese le risposte da altre domande simili) e questa è stata l'unica che ha finito per funzionare per me. Ed è stato di gran lunga il più veloce.
glenneroo,

1
Questa è di gran lunga la risposta migliore: funzioni semplici e integrate, nessun problema con il registro. Dovrebbe essere la risposta accettata.
Kevin Roche,

Facilmente il metodo più pulito e semplice, grazie Kenneth.
Seth,

Questa risposta mi spaventa perché in realtà ho un X: drive. Non ci sono abbastanza informazioni qui e non consiglio alle persone di seguirlo senza ulteriori spiegazioni.
qodeninja,

25

Cygwin rm -rffunziona bene su percorsi lunghi!


3
Cygwin ha funzionato perfettamente per me! Ho appena fatto un -rm -rf e tutti i file sono stati cancellati.
Ranhiru Jude Cooray,

3
Ha funzionato anche per me con GNU bash, versione 4.1.10 (4) -release
rjzii,

2
Ha funzionato alla grande quando si esegue da una finestra di comando di Git Bash. Per questo avevo installato GitGui.

22

Basta passare da Powershell al comando eseguendo di seguito:

Cmd /C "rmdir /S /Q <dir>" 

3
"La cartella non è vuota". Ops. L'OP vuole eliminare una cartella non vuota.
leye0,

in che modo differisce dalla risposta di @herms?
bigbadmouse,

18

La soluzione di Dentrasi è ciò che ha funzionato meglio per me, ma volevo pubblicare i passaggi specifici in una risposta di alto livello.

  1. Scarica e installa l'ultima build stabile di 7zip .
  2. Esegui il File Manager 7zip ( 7zfm.exe ).
  3. Nel File Manager 7zip, naviga in modo da poter vedere il nome della cartella che vuoi eliminare (cioè sei nella cartella principale).
  4. Tieni premuto il tasto Maiusc.
  5. Fai clic sul pulsante " Elimina ", sulla tastiera o nella barra degli strumenti di Filez 7zip; assicurati di tenere ancora premuto il tasto Maiusc .
  6. Fai clic sul pulsante " OK "; assicurati di tenere ancora premuto il tasto Maiusc .

Bel tentativo ma ancora non ha funzionato per me con 10 k di cartelle ricorsive. Solo rimraf ha funzionato.
Julian Knight,

@JulianKnight: Sì, questo approccio non ha finito per funzionare anche per me il 100% delle volte. Volevo solo menzionarlo perché era tra i processi più semplici e almeno funzionava parte del tempo. L'unica cosa che ho scoperto che ha funzionato il 100% delle volte è l'approccio di script del modulo Powershell + NTFSSecurity, che ho descritto di seguito. IIRC rimraf ha fallito quando chiamato, ed è così che sono entrato in questo casino in primo luogo. Vedi questo thread Node.js per i dettagli: github.com/nodejs/node-v0.x-archive/issues/…
Mass Dot Net

Sì, ci saranno sempre problemi del genere. In effetti è stato il codice di installazione della libreria IDE di Arduino che mi ha fatto in (Java), ho accidentalmente selezionato la cartella contenente le librerie come una cartella per installare una libreria da e fuori è andata! Ho terminato il processo non appena me ne sono reso conto ma avevo già 10 di k di cartelle (dannatamente i7 / SSD!) La prossima versione principale di NPM ha lo scopo di aiutare a risolvere molti dei problemi di installazione della libreria profonda per Node poiché le dipendenze dovrebbero essere soddisfatte da una struttura molto più piatta. Comunque sono davvero contento che qualcuno mi abbia messo su rimraf - facile e gratuito.
Julian Knight,

@JulianKnight - Sì, un giorno o due fa qualcuno mi ha detto che npm3 dovrebbe aiutare ad alleviare questi problemi prevenendo strutture di cartelle di dipendenza profondamente annidate.
Mass Dot Net,

Non so se "previene" ma tratta le dipendenze nidificate in modo più sensato in modo che se l'app principale richiede la libreria X v1.0 e la libreria Y richiede Z che richiede anche X v1.0, verrà utilizzata la libreria di livello superiore. Attualmente Z installerebbe la propria versione di X.
Julian Knight il

11

Ci sono due cose non già menzionate nelle risposte esistenti.

  1. È possibile utilizzare il prefisso del percorso di lunghezza estesa per accedere a percorsi lunghi
  2. Con Windows 10, puoi abilitare il supporto per percorsi lunghi per uso generale; nota tuttavia che non tutte le applicazioni funzioneranno con percorsi lunghi, dovresti testare software più vecchi. Solo il software con una voce manifest appropriata sarà in grado di farne uso.

Prefisso percorso lungo

L'API di Windows ha una funzione speciale che supporta nomi di percorsi Unicode lunghi fino a 32k caratteri (ogni elemento ha una lunghezza massima di 255 caratteri).

Questo viene spesso erroneamente indicato come nome UNC, ma non è tuttavia correlato.

Il prefisso utilizzato per indicare all'API di utilizzare percorsi Unicode lunghi è \\?\come in:

\\?\D:\very long path

I nomi UNC vengono normalmente utilizzati quando si fa riferimento a percorsi su server remoti nel modulo \\servername\path name\file name. Puoi combinarlo con il prefisso del percorso lungo in modo che:\\?\UNC\server\share

Si noti che alcune applicazioni, scritte male ma purtroppo abbastanza comuni, non supportano i percorsi dei file UNC né il prefisso del percorso lungo.

Riferimento: https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath

Supporto per percorsi lunghi

Questa è un'opzione che è stata aggiunta alle versioni recenti di Windows 10. Al momento della stesura non è attivata per impostazione predefinita poiché richiede un supporto specifico per l'applicazione. È interessante notare che PowerShell ha il supporto integrato, quindi abilitando questa opzione si potranno usare percorsi lunghi direttamente negli script PowerShell.

Puoi attivarlo tramite l'editor dei Criteri di gruppo se disponi di una versione di Windows. Oppure puoi semplicemente utilizzare la seguente modifica del Registro di sistema. Come sempre, eseguire il backup della sezione del registro che si sta modificando prima di fare qualsiasi cosa.

  1. Corri regedit.exe.
  2. Conferma il prompt UAC.
  3. Vai al tasto: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
  4. Crea o modifica la chiave LongPathsEnabled.
  5. Se non esiste, fai clic con il pulsante destro del mouse su Politiche e seleziona Nuovo> Valore Dword (32 bit) dal menu.
  6. Impostare LongPathsEnabledsu 1per abilitare.

Tutte le applicazioni con voci manifest appropriate avranno ora accesso ai percorsi lunghi standard POSIX. Ciò dovrebbe includere le app di Windows Store.

Riferimento: https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/

AGGIORNAMENTO 2017-04-09

@maoizm ha sottolineato un problema con la chiave di registro sopra, quindi ho fatto qualche altro scavo . Sembra che ora puoi impostare il supporto per i nomi di file lunghi con una chiave di sistema:

HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)

Funziona comunque solo per le applicazioni che sono specificatamente impostate per usarlo (richiede una voce nel manifest.xml dell'applicazione).

Si noti inoltre che non è possibile utilizzare nomi di percorso relativi con questo metodo.


{48981759-12F2-42A6-A048-028B3973495F}Machineparte del percorso del registro sarà diversa su ogni computer - potrebbe non essere ovvio per tutti
maoizm

1
@maoizm - buon punto, grazie per averlo evidenziato. Si prega di consultare il mio aggiornamento per un'alternativa se si utilizza l'aggiornamento dell'anniversario W10 o successivo.
Julian Knight,

Sto scrivendo una libreria chiamata FoundationIO e sto cercando di impostare il percorso lungo come predefinito, c'è qualche funzione che posso chiamare o macro che posso impostare per abilitare automaticamente il supporto lungo percorso per qualsiasi utente della mia libreria?
MarcusJ,

Ciao Marcus, è una libreria nativa di Windows? In tal caso, .NET ha già il supporto richiesto già presente come parte dell'API di Windows pertinente - mi dispiace non conoscere i dettagli poiché non sono un programmatore di API .NET o Win ma i dettagli dovrebbero essere ricercabili su MSDN.
Julian Knight,

8

Mi piace la soluzione cmd. Anche se voglio condividere un'altra soluzione alternativa che funziona anche solo in Explorer: prova ad accorciare i nomi delle cartelle principali prima dell'eliminazione: nomi più brevi accorceranno il percorso. Supponiamo che tu abbia questa struttura ad albero della cartella:

C: \

.. Progetti

.. .. Alcuni progetti fantastici nella primavera del 2014

.. .. .. Alcune attività nel parco della città un venerdì

.. .. .. .. Bla bla bla bla bla bla bla bla bla bla bla bla bla

.. .. .. .. .. File reali anche con nomi lunghi

In questo caso non è possibile eliminare le cartelle, né è possibile eliminare o rinominare i file. Se si desidera rimuovere l'intera struttura di cartelle o parte di essa, è possibile rinominare temporaneamente le cartelle principali e abbreviare il percorso, quindi rimuovere la cartella. I nomi possono essere solo lettere:

C: \

.. Progetti

.. .. X

.. .. .. y

.. .. .. .. z

.. .. .. .. .. File reali anche con nomi lunghi

Nel mio caso volevo solo rimuovere l'intera cartella con molte sottocartelle e file. Quindi non mi importava dei nomi delle cartelle.


1
Ho scritto un piccolo strumento che fa proprio questo e lo metto su GitHub. github.com/epsitec/Tools-RecursiveDelete
Pierre Arnaud

1
Tutti i comandi o Maiusc + CANC non funzionano per me, ma questo funziona.
Larkee,

Non funziona davvero quando hai 10 k di cartelle nidificate
Julian Knight,

inoltre non funziona se una delle cartelle ha un nome davvero lungo (non è possibile rinominare la cartella offensiva).
aucuparia,

7

La soluzione a 7 zip funziona alla grande. Un'altra opzione se hai installato git è aprire una shell bash e usare:

rm -f

(o rm -rfper cartelle)


1
Per chi non lo sapesse, spiega come "apri una shell bash" in Windows?
OMY,

1
@OMY devi installare git. Quindi dal menu di avvio puoi aprire git bash o se hai scelto di avere le estensioni della shell quando hai installato git, puoi fare clic con il tasto destro del mouse su o in una cartella e selezionareGit Bash Here
Utente

4

Suggerisco Total Commander (shareware, ma continua a funzionare dopo il periodo di prova con solo una schermata di avvio minimo). Questo è il modo in cui risolvo sempre i problemi di nome file troppo lunghi .


1
Grazie al signore ho trovato questo. Problemi con l'eliminazione di una cartella node_modules perché decide di nidificare stupidamente le directory.
Alias,

Bene, @Alias, Total Commander rende questo problema più facile da rilevare, almeno per me. Dopo aver identificato tale problema, chkdskdovrebbe risolverlo.
Sopalajo de Arrierez,

La versione 7.0 non funziona, mostra un messaggio di errore e suggerisce di eseguire l'operazione come amministratore, che non riesce.
izogfif,

@izogfif: l'ultima versione di oggi è 8.52a. Vorrei provare questo. Non fornisci dettagli sul tuo messaggio di errore, ma potresti avere alcune incoerenze sulla struttura dell'archivio che devono essere risolte (almeno per NTFS) con "chkdsk c: / f" (supponendo che l'unità C :).
Sopalajo de Arrierez,

2

Puoi anche cancellarli usando il loro nome abbreviato equivalente. dir /xte li mostrerò.


2

Ho creato un semplice programma Java che utilizza robocopy per eliminare i file. Il barattolo è eseguibile. Per un output aggiuntivo eseguilo dalla riga cmd.

https://drive.google.com/file/d/0B5pSEjxJvt_1WVp1T3puSm1CNjg/view?usp=sharing


2
E se non vuoi usare Java, puoi usare questo strumento che ho scritto usando .NET ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud,

@PierreArnaud grande utilità. Avevo bisogno di qualcosa del genere per l'automazione della riga di comando. @ CamHart buon lavoro anche da te! Grazie ragazzi!
amitthk,

1

Ho provato tutte le altre risposte, ma non hanno funzionato (almeno per me).

Mi sono imbattuto in delinfile e ho lavorato abbastanza bene e abbastanza rapidamente!

La versione di prova è limitata a 3 azioni / 15 giorni ma è utilizzabile se si desidera eliminare solo alcune cartelle / file:


1

Bigger Directories è progettato anche per questo compito. inserisci qui la descrizione dell'immagine

  • Scaricare
  • Utilizza una chiamata ricorsiva con RemoveDirectoryW per eliminare le directory esistenti
  • Utilizza il proprio repository di file per le directory appena create
  • I file possono essere spostati dalle directory prima della cancellazione delle directory di contabilità.
  • Veloce, sebbene la navigazione all'inizio della directory sia un clic per directory nidificata
  • Windows XP (SP3) e versioni successive
  • Codice non gestito non firmato senza programma di installazione, quindi possibile avviso Smartscreen quando eseguito da una cartella di riserva, ad esempio desktop.

Maggiori informazioni su CodeProject .


Si prega di leggere Come posso raccomandare il software per alcuni suggerimenti su come dovresti raccomandare il software. È necessario fornire almeno un collegamento, alcune informazioni aggiuntive sul software stesso e come può essere utilizzato per risolvere il problema nella domanda.
David Post

@ David: meglio? Link è stato molto utile, grazie.
Laurie Stearn,

1

Ho riscontrato questo problema in Windows 10 e ho trovato questa soluzione semplice.

  1. Entra nel profondo dell'albero delle cartelle.
  2. Trascina e rilascia una cartella da un punto centrale dell'albero a un punto di inizio dell'albero utilizzando la barra degli indirizzi.
  3. Come nella mia immagine trascina e rilascia la casella rossa nella casella verde. (in questo caso il percorso è più breve, ma funziona anche per i percorsi lunghi)
  4. Quindi il percorso diventa più breve ed elimina normalmente usando il tasto Canc.

inserisci qui la descrizione dell'immagine


1

Hai la risposta perfetta qui (per i file). Funziona in Windows 10.

REM Make sure there is no \ at the end of either path!
robocopy "C:\...\...\...\long\path" "C:\DeleteMe" "FileName" /MOV
REM Note: this ^ can be called many times before...:

REM Finally, recursively delete the higher up DeleteMe directory.
rmdir /S /Q DeleteMe

Vedi anche: https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath

Nessuna risposta alternativa in 4 domande era sufficiente per le mie esigenze. Benvenuto mondo.


0

Alla fine ho scoperto come farlo tramite Powershell. Ecco le istruzioni che ho seguito per farlo funzionare su Windows 7:

  1. Creare una nuova cartella denominata NTFSSecurity nella cartella C: \ Users \ XXXX \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity , dove XXXX è il nome utente di Windows. Esempio: se il mio nome utente fosse " aspnyc ", la nuova cartella sarebbe C: \ Users \ aspnyc \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity .

  2. Scarica il pacchetto del modulo PowerShell per la sicurezza del file system : dovrebbe essere disponibile come semplice file ZIP.

  3. Apri una console Powershell, esegui Get-Module -ListAvailable e assicurati che NTFSSecurity venga visualizzato da qualche parte nell'elenco dei moduli registrati.
  4. Nella console Powershell, eseguire Import-Module NTFSSecurity .
  5. Nella console di Powershell, eseguire Remove-Item2 "YYYY" -Recurse , dove YYYY è il percorso di Windows della cartella che si desidera eliminare in modo ricorsivo (ad esempio C: \ Potatoes \ Badgers \ FolderToDelete ).

0

Alla fine ho scoperto come farlo con Powershell su Windows 10 in cui i singoli nomi dei file erano troppo lunghi. Ecco i passaggi che ho seguito per farlo funzionare su Windows 10:

  1. Scarica il pacchetto del modulo PowerShell per la sicurezza del file system : dovrebbe essere disponibile come semplice file ZIP.
  2. Estrarre il file Zip come cartella NTFSSecurity nella directory C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ Modules.
  3. Apri una console Powershell con l'elevazione amministrativa (nota anche come modalità Admin) ed esegui Get-Module -ListAvailable e assicurati che NTFSSecurity venga visualizzato da qualche parte nell'elenco dei moduli registrati.
  4. Esegui Set-ExecutionPolicy Unrestricted per ignorare la modalità di esecuzione firmata. Devi confermare questa azione con una Y (es)
  5. Alla fine, cd nella cartella che si desidera eliminare.
  6. Nella console Powershell, eseguire Import-Module NTFSSecurity .
  7. Nella console Powershell, eseguire Remove-Item2 "YYYY" -Recurse , dove YYYY è il percorso di Windows relativo o assoluto della cartella che si desidera eliminare in modo ricorsivo (ad es. C: \ Potatoes \ Badgers \ FolderToDelete ).
  8. Controlla se ha funzionato.
  9. Alla fine si ripristina la modalità di esecuzione firmata con Set-ExecutionPolicy Restricted . Devi confermare questa azione con Y (es).

0

Se hai installato Bash su Ubuntu su Windows, puoi cd nella directory principale in un normale prompt dei comandi e quindi digitare:

bash -c "rm -rf dirname_here"

Il che avvia bash, elimina ricorsivamente la directory da linux dove non ci sono restrizioni per i nomi dei file e quindi torna al normale prompt dei comandi.


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.