Forza la cancellazione di file con un nome piuttosto grande


60

Uso regolarmente Node.js per gestire le dipendenze dei programmi che scrivo, non un grosso problema. Oggi ho finito con una struttura di cartelle come questa: enter image description here

Cercando di cancellare qualsiasi file è stato riscontrato questo errore:

I nomi dei file di origine sono più grandi di quelli supportati dal file   sistema. Prova a spostarti in un percorso con un nome percorso più breve o prova   rinominare i nomi più brevi prima di tentare questa operazione.

Era già in C: \, quindi non sarebbe diventato molto più breve.



hai qualche idea di come la tua struttura di cartelle abbia questo grande mi sono imbattuto nella stessa situazione durante l'installazione di grunt.
eran otzer

1
@eranotzer usando npm.
Seiyria

non ho fatto le dipendenze nei tuoi pacchetti.json dove scritto in modo errato?
eran otzer

@eranotzer Sì. A causa di come npm @ 2 ha funzionato, ogni dipendenza ha annidato le sue dipendenze al suo interno. Ciò significava che le catene di dipendenza potevano essere arbitrariamente lunghe. npm @ 3 sta cercando di regolare questo comportamento.
Seiyria

Risposte:


75

Utilizza lo strumento Microsoft robocopy.exe.

  1. Crea una nuova cartella vuota, ad es. c:\empty
  2. Quindi copia quella cartella vuota nella cartella che contiene i nomi di file lunghi che stai cercando di eliminare, ad es. c:\myannoyingfolder. Fai questo in questo modo nel prompt dei comandi:

    robocopy / MIR c: \ empty c: \ myannoyingfolder


Poiché questo fa parte del mio flusso di lavoro abbastanza spesso, ho capito come integrarlo con la shell di Windows. Vedi la mia risposta qui sotto. :)
toddmo

Nota: questo comando può richiedere alcuni secondi o persino minuti per terminare. Quindi, non ti preoccupare e lascia che faccia la magia :-)
Adil Malik

Grazie, ha funzionato per me. Dovevo assicurarmi che avessi ucciso anche qualsiasi processo (IIS) che si trovava ancora su uno dei file.
Slick Shinobi

Ogni volta che provo ad aprire robocopy.exe, una finestra lampeggia per un secondo e poi non succede nulla. Per favore aiuto
Maulik Modi

27

okay, supponiamo che tu voglia cancellare un albero D:\very\long\path, non è necessario utilizzare strumenti come Robocopy.

  1. Passare alla directory principale dell'unità che contiene la directory che non puoi cancellare
  2. Creare una directory con un nome di singola lettera, ad es D:\a
  3. Passare all'interno della directory che si desidera eliminare, in questo Astuccio D:\very\long\path
  4. Seleziona tutto ( Ctrl + UN ) e Taglia ( Ctrl - X )
  5. Passa alla cartella che hai appena creato
  6. Incolla ( Ctrl - V )
  7. Passare alla directory principale ed eliminare la cartella temporanea, in questo caso D:\a
  8. Quindi torna indietro ed elimina la directory originale

2
Questo non ha funzionato per me al primo tentativo per me. Tuttavia, dopo aver ripetuto questa procedura alcuni livelli di cartelle in più sono riuscito a ottenere tutto cancellato.
abaldwin99

1
Ottima soluzione, ha funzionato perfettamente. Semplice ed efficace, grazie!
Caner Öncü

GRANDE!! funziona come un fascino !!! non sono necessari altri strumenti. Grazie!
Prasanth K C

Funziona alla grande, e vorrei aggiungere un punto a questo, se la selezione dei file dal percorso non funziona, puoi selezionare una cartella da qualche parte nel mezzo del percorso lungo e spostare quella cartella, invece, in una cartella temporanea e quindi eliminare entrambi in un modo simile.
Narayana Nagireddi

4

Ho iniziato a digitare questo problema mentre provavo una moltitudine di comandi, incluso del /F e rmdir /S (così come tenere premuto shift mentre si elimina per cercare di bypassare il cestino). penso che rmdir /S in realtà sono stati cancellati tutti i file, quindi sono stato in grado di procedere con l'eliminazione delle cartelle che erano nodi foglia, per poi proseguire nell'albero di alcuni nodi alla volta. Alla fine li ho puliti tutti, ma era ridicolo.


4

È possibile integrare questa funzionalità nella shell di Windows. Il mio miglioramento della risposta di Flo è stato troppo lungo per un commento.

Ho aggiunto un Delete comando al menu di scelta rapida di Windows.

enter image description here

Il delete.reg il file aggiunge voci di registro per associare le cartelle al file robodelete.bat file batch.

delete.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Delete]

[HKEY_CLASSES_ROOT\Directory\shell\Delete\command]
"Extended"=""
@="\"D:\\Documents\\robodelete.bat\" \"%1\""

robodelete.bat

mkdir c:\empty
robocopy /MIR c:\empty %1
rmdir %1
rmdir c:\empty

Nota : Potrebbe essere necessario modificare i percorsi in entrambi i file secondo le proprie preferenze.

AVVERTIMENTO : Non c'è modo di annullare questo comando. Non usa il cestino e non chiede conferma a Y / N prima di distruggere definitivamente la cartella!


Grazie per l'avvertimento. Ne ho bisogno anche nel mio flusso di lavoro, ma vorrei evitare di avere un pulsante nucleare nel menu del tasto destro del mouse che manca una conferma S / N. Se avrò tempo, proverò a fare quella regolazione e suggerire una modifica.
abaldwin99

1
@ Abaldwin99, come questo forse stackoverflow.com/a/1807318/1045881
toddmo

4

Lo strumento da riga di comando open source SuperDelete ( GitHub ) ha funzionato per me dopo altre opzioni non riuscite (Windows 10).



0

In molti casi, il CDing nella directory da un prompt dei comandi e l'utilizzo di DEL funzionerà.

In caso contrario, è necessario elaborare il nome UP nell'albero delle directory: rinominare la cartella di livello più basso in un nome più breve (ad esempio "a"), quindi il nome successivo della cartella superiore e così via fino a quando il percorso totale non è sufficientemente breve. Lavorando dal basso verso l'alto, si manipolano sempre i nomi, che hanno un percorso completo più corto rispetto ai file finali.


0
  • Aprire il prompt dei comandi amministrativo
  • net use z: c:\path
  • del z:\*.*

Tweak di conseguenza. Z: è solo una lettera di unità arbitraria per mappare il percorso incriminato a. L'ultimo comando delete cancellerà la directory WHOLE che hai mappato, quindi sii più specifico se necessario.


2
Questo è molto pericoloso per gli utenti non esperti! C'è il potenziale per cancellare un disco se fatto male.
Rudi Strydom

Concordato al 100%. Sicuramente procedere con cautela su questo.
Bradley Forney

0

Il modo migliore è avere avviabile Linux su pendrive ed elimina i file senza problemi da live CD os.


-1

Avevo anche lo stesso problema, e l'ho trovato anch'io, semplicemente rinominare la cartella principale il meno possibile. Ex. Se la nostra cartella in " D "Guida come D: // cartella / Undelete_Folder . Solo una cosa che devi fare è rinominare il nome della cartella padre di dimensioni ridotte, puoi rinominarlo " un ". allora la tua posizione sarà D: // a / Undelete_folde r. e quindi eliminare la cartella principale.


Non solo questo non funziona necessariamente (cosa succede se è ancora più grande, anche con la riduzione?), Ma ho menzionato esplicitamente che la mia cartella era nella radice del disco.
Seiyria

-2

Se tutti gli altri falliscono

Vai alla Directory finale nella stringa. Taglia i file L'incolla di nuovo nel 4o o 5o file nella stringa. Quindi [Shift] + [Delete] dovrebbe fare il trucco.

Ero scettico di eseguire quanto sopra in prompt dei comandi con privilegi elevati mentre stavo cancellando un file di ripristino test da un backup DPM.

spero che questo ti aiuti.


Questo probabilmente non funzionerà perché lo faranno ancora avere quel percorso file lungo per l'operazione di taglio.
Seiyria
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.