Elimina il file contenente caratteri non validi in Windows


16

Ho alcuni file che contengono i due punti nel nome del file (es. 1d67c0d23e859ed4a259749e4a720d9e: default-sink). Quando provo a rimuoverli dalla riga di comando con il comando:

c:\backup> del /F *.*

Ottengo "Il sistema non riesce a trovare il file specificato." per ogni file. Se specifico un singolo file:

c:\backup> del /F "1d67c0d23e859ed4a259749e4a720d9e:default-sink"

Ottengo "Il nome del file, il nome della directory o la sintassi dell'etichetta del volume non sono corretti". Se provo ad usare rd nella cartella principale ottengo

Come posso rimuovere questi file?


2
Questi file sono stati creati sulla partizione NTFS quando sono stato avviato in Linux. Suppongo che dovrò usare il disco di avvio di Linux in quanto sembra che a Windows non piacciano i due punti nei nomi dei file a livello di driver del file system.
grom

Risposte:


22

Esiste un articolo di Microsoft KB che elenca i possibili modi per eliminare tali file su:

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

Il modo in cui utilizzo in genere è il metodo API nativo:

del "\\?\c:\path\1d67c0d23e859ed4a259749e4a720d9e:default-sink"

Secondo:

http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx

Il :è un carattere riservato su NTFS, il metodo nativo API che ho citato sopra è il metodo consigliato per eliminare tali file.


4
Questo non funziona per i due punti, poiché viene interpretato come un flusso di dati denominato.
psusi,

Questo ha funzionato per il mio caso. il file con cui avevo riscontrato il problema conteneva una virgola,
Maher Fattouh del

Grazie, ha funzionato per me. Il file è terminato in un periodo. CA848D8F.
Mastro,

1
Non funziona Il mio nome file contiene una barra rovesciata.
Pacerier

Se il nome del file contiene :come richiesto dall'OP, questo metodo non funziona. Usalo chkdsko cancellalo da un live linux.
Sourav Ghosh,

15

Immagino che tu possa provare il nome 8.3?

del /F 1d67c0~1

Si noti che sulle unità NTFS è possibile disabilitare esplicitamente la funzionalità 8.3, quindi in tal caso si è sfortunati per questa opzione. Per ottenere il nome del file dir adir /x

C'era uno strumento gratuito chiamato delinvfilema sono andati e lo hanno cambiato in shareware / pagato


Come potrei essere in grado di farlo su un volume NTFS creato con il formatcomando con supporto per i nomi 8.3 disabilitato?
user2284570

1
@ user2284570 questo metodo non funzionerà. Quando ho scritto quella risposta, Microsoft aveva i nomi 8.3 abilitati, ma in questi giorni è disabilitato per impostazione predefinita.
Mark Henderson

@MarkHenderson, Il mio nome file è 7:2. Come uso il nome 8.3 per il nome file di 7:2?
Pacerier

@Pacerier vedi il mio commento precedente. Questo metodo non funziona con i moderni sistemi operativi. Windows XP o precedente.
Mark Henderson

13

Questo ha funzionato per me:

  1. Corse chkdsk /f
  2. PC riavviato
  3. Quindi sono stato in grado di selezionare ed eliminare il file

4

Chiudere tutti i file, se presenti, salvati nell'unità che contiene tali file. Ora, apri le proprietà dell'unità.

"Risorse del computer" -> "Fare clic destro su questa unità"> proprietà

Quindi, vai alla scheda " Strumenti " e fai clic su " Verifica ora " sotto l'etichetta "Controllo errori".

inserisci qui la descrizione dell'immagineClicca qui per un'immagine più grande

Questo smonterà l'unità e scansionerà l'unità completa per errori, eventualmente eliminerà tali file con nomi illegali. Al termine mostrerà un messaggio che dice che alcuni file sono stati corretti.

Ho cancellato con successo tali file dal mio disco rigido esterno.


3

Ho un sottosistema per applicazioni basate su UNIX installato sul mio PC (Windows 7). Dalla shell di Windows, posso creare un file con touch 1d67c0d23e859ed4a259749e4a720d9e:default-sink, quindi rimuoverlo conrm *:*


Le utility compatibili con POSIX (come SFU) possono eliminare tali file.
Ausmith1,

@JoeInternet: sigghh Microsoft ha rimosso tutti i sottosistemi non Windows dal 2012 in poi.
user2284570,

... ma un sottosistema unix è tornato di nuovo nella vittoria 10.
user165568

1

Prova a rinominare la cartella principale in un singolo carattere (a, 1, ecc.), Quindi prova a eliminare la cartella principale. Se non funziona, passa alla prima cartella figlio e rinominala in un singolo carattere e riprova a eliminare. Uso spesso questo metodo per file con caratteri non validi (non chiedermi come vengono creati perché non lo so) o per file in cui il percorso supera il massimo (di nuovo, non chiedere come si verifica).


1

7zip può eliminare file che Windows non riesce; L'ho usato in passato quando mi occupavo di nomi di file troppo lunghi, ma non l'ho mai provato su file con due punti dentro. Normalmente sarebbero usati per indicare ADS.


Questo perché 7-zip usa cygwin.
user2284570

1
Non funziona per entrambi i miei file. Il primo file ha un nome file con barra rovesciata e il secondo file ha un nome file con due punti.
Pacerier

No, è perché 7-zip utilizza l'API di Windows anziché la shell. Ha le stesse limitazioni dell'API: pensa che i due punti indicano flussi.
user165568

7zip ha funzionato per me
user1278519

1

Ho un sistema a doppio avvio e nessuna delle risposte sopra ha funzionato per me. Se il file si trova in un disco montato dall'altro tuo sistema operativo (Ubuntu 16.04 LTS per me) puoi semplicemente cancellarlo usando l'altro tuo sistema operativo;)


Questo è abbastanza ragionevole se in un bind (anche se non può essere fatto a una macchina online). Inoltre, non è richiesto il dual boot nativo, poiché possiamo avviare una distribuzione live per fare ciò come il disco di installazione Fedora o Knoppix. TUTTAVIA, bisogna stare attenti in un ambiente come questo, poiché il driver NTFS3G che utilizziamo per montare questo sistema non rispetterà la maggior parte delle autorizzazioni / ACL di Windows (motivo per cui è così efficace nel liberarsi di file "bloccati") .
Spooler

0

Hai provato a citare i nomi dei file? Dare il comando esatto che stai eseguendo sarebbe utile.


L'ho aggiunto al comando esatto che sto correndo alla domanda.
grom

0

Hai provato a usare un carattere jolly? Ad esempio 'del 1d67c0d23e859ed4a259749e4a720d9e *. *' Potrebbe funzionare.


Hai provato i caratteri jolly. Nessuna fortuna
Grom

1
La prossima cosa a cui penso è di avviare il sistema con un cd di Linux (come il cd di ripristino del sistema), montare il volume lì e provare a cancellare da lì. Potresti ottenere risultati interessanti a quel punto, come chissà cosa sta realmente succedendo nel filesystem.
Michael Kohne,

@MichaelKohne: Penso che usare un'implementazione del percorso Unix sia la soluzione giusta. Ma perché usare Linux? Windows viene eseguito come sottosistema NT e esiste già un sottosistema POSIX / Unix NT.
user2284570,

1
@ user2284570 - perché dato il fatto che sono stati creati con Linux, sembra probabile che il driver NTFS linux abbia permesso qualcosa che non avrebbe dovuto, che anche la shell POSIX di Windows potrebbe non essere in grado di superare il driver del filesystem. Molto più semplice avviare un CD live di Linux, rimuovere il file fasullo e riavviare Windows.
Michael Kohne,

@MichaelKohne: No, perché i percorsi UNC funzionano già (sottosistema nativo) e con i sottosistemi POSIX non c'è accesso diretto a flussi di dati alternativi, quindi è possibile utilizzare i :file all'interno.
user2284570,

0

Hai provato dir / X per scoprire l'attuale nome 8.3, e poi hai provato a cancellare quel nome?

Oppure, quel file potrebbe avere un flusso di dati alternativo? Potresti volerlo guardare allo strumento su http://www.nirsoft.net/utils/alternate_data_streams.html per vedere cosa può dirti (non ho mai usato quello strumento, è venuto fuori solo quando ho cercato) .


0

Avevo una cartella con una virgola nel nome. Ho provato alcuni dei suggerimenti di cui sopra e non sono riuscito a farli funzionare.

Sono stato in grado di eliminare le cartelle con cygwin. L'installazione di quell'app non è per tutti, ma farà il lavoro.


0

Nessuno dei suggerimenti di cui sopra ha funzionato per me. Ho usato WinRar. Apri winrar e vedrai un elenco di file, dove troverai il file sospetto "nomefile" (che è stato creato da te come "nomefile: some_text.txt". Rinomina il file in Winrar e fornisci un'estensione (come .txt o .doc).

Torna a Windows Explorer vedrai "nome file .txt" (o doc). Eliminalo da lì.

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.