elimina la directory ricorsiva creata da robocopy quando "Il nome del file è troppo lungo"


9

Dopo aver eseguito robocopy.exe per eseguire il backup di una cartella C: \ Users \ senza utilizzare l' /xjopzione, sono finito con una directory ricorsiva che era troppo lunga. Ad esempio, se esegui dir /b /sriceverai il seguente errore:

Il nome della directory C: \ Users \ ... \ AppData \ Local \ Dati applicazioni \ Dati applicazioni \ Dati applicazioni \ Dati applicazioni \ Dati applicazioni \ Dati applicazioni \ Dati applicazioni \ Dati applicazioni \ Dati applicazioni \ Dati applicazioni \ Dati applicazioni \ Applicazione Dati \ Dati applicazioni è troppo lungo.

Ho provato a eliminarlo con rmdir "Application Data" /sma ho ricevuto l'errore "Il nome del file è troppo lungo"

Ho esaminato altre soluzioni, ma ho pensato di poter utilizzare lo strumento che ha causato la risoluzione del problema.

Risposte:


14

Creare una directory vuota con mkdir empty, quindi utilizzare robocopy empty\ "Application Data\" /mir"che rimuoverà l'intero albero di directory. Quindi emettere un rmdir emptye rmdir "Application Dataper ripulire e il gioco è fatto.


3
+1 Incredibile che richiede qualcosa di così arcano per fare qualcosa di semplice come eliminare una cartella ...
nextgentech

Questa buggy infinita cartella ricorsiva mi stava facendo impazzire! Grazie.
Zofren,

4

Potresti essere in grado di cdscendere abbastanza in profondità nella directory per eliminare ciò che è sotto e cdtornare di nuovo all'inizio e cancellare ciò che resta.

Se ciò non funziona e sei ancora bloccato, scarica la versione demo gratuita della mia shell Hamilton C (divulgazione completa: sono l'autore) e usa l' rmutilità che ne deriva usando -r(ricorsivo) e -x(elimina qualsiasi cosa ) opzioni.

rm -rx directoryname

My rmusa internamente il nuovo formato di nome file Unicode lungo , permettendogli di manipolare percorsi di 32K caratteri e questo dovrebbe ottenerlo.

Se scopri che il problema comporta anche autorizzazioni, potrebbe essere necessario utilizzare sudoo suelevare, ad esempio,

sudo rm -rx directoryname

In casi davvero testardi, potresti essere ostacolato da un ACL che impedisce l'accesso, ad esempio, i caclsrapporti Everyone:(DENY). In tal caso, potrebbe essere necessario rimuovere tale ACE (voce controllo accessi).

cacls directoryname /e /r everyone

Infine, intendo davvero che ciò sia utile. I miei log del server mi dicono che le persone stanno scaricando il mio software per provare questo e voglio che funzioni. Se incontri un caso in cui non ha funzionato, spero che ti metterai in contatto per dirmi in modo da poter eseguire il debug del perché e farlo funzionare. Le cose che non puoi eliminare accadono molto e mi piacerebbe avere tutti i casi coperti.


3

Puoi anche provare una delle seguenti;

Risoluzione 1: utilizzare un nome 8.3 generato automaticamente per accedere al file

Risoluzione 2: rinominare o spostare una cartella profonda

Risoluzione 3: mappare un'unità su una cartella nella struttura del percorso Mappare un'unità su una cartella all'interno della struttura del percorso del file o della cartella di destinazione. Questo metodo accorcia il percorso virtuale.

Risoluzione 4: utilizzare una condivisione di rete profonda quanto la cartella Se le risoluzioni 1, 2 e 3 non sono convenienti o non risolvono il problema, creare una condivisione di rete più profonda possibile nell'albero delle cartelle, quindi rinominare le cartelle accedendo alla condivisione.

Risoluzione 5: utilizzare uno strumento in grado di attraversare percorsi profondi

http://support.microsoft.com/kb/320081


questa soluzione sembra essere un tipo di "Risoluzione 5: utilizzare uno strumento in grado di attraversare percorsi profondi"
Aaron,
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.