Come rimuovo un file chiamato "NUL" su Windows?


49

Ho una scatola di Windows XP (filesystem NTFS) su cui ho trovato un file chiamato NUL. Non sono stato in grado di rimuovere questo file in alcun modo normale. Il file sembra appartenere Administratoral SYSTEMgruppo, a differenza di qualsiasi altro file nella stessa directory (gli altri file sono di proprietà del mio ID utente).

Come posso eliminare questo file? Da dove proviene?


3
NUL è una parola riservata al sistema; vedi questo articolo di Wikipedia . Un file chiamato NUL non dovrebbe mai esistere nel filesystem; ciò può essere causato da un software difettoso. Potresti riuscire a rimuoverlo usando il DELETEcomando usando il Prompt dei comandi.
bwDraco,

9
@DragonLord: il filesystem non ha problemi con tali nomi; ad esempio, è possibile creare tali file all'interno di un ambiente POSIX. (Si possono trovare aux.cnomi simili nel codice sorgente del software.) È puramente l'API Win32 che gestisce questi "nomi dei dispositivi".
gravità

Lo stesso vale per CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9 e CLOCK $ più alcuni altri - vedi en.wikipedia.org/wiki/…
robocat

Cygwin crea (o era abituato a) un file chiamato "nul", solitamente visualizzato in "C: \ cygwin \ dev \ nul". Questo è quello che ho colpito una volta ogni pochi anni, io Google, e sono tornato (di nuovo) a questa domanda.
zarchasmpgmr,

Risposte:


83

Provare

Del \\?\C:\My\Path\NUL

nel prompt dei comandi.

Vedere questo articolo del supporto Microsoft per i dettagli: Non è possibile eliminare un file o una cartella su un volume del file system NTFS , in "Causa 5: il nome del file include un nome riservato nello spazio dei nomi Win32".


1
Grazie! Ha funzionato! Inoltre, grazie per l'ottimo riferimento alla documentazione autorevole. Ho trovato qualcosa in una ricerca web molto simile, ma che non ha funzionato. Quel suggerimento aveva un .posto al posto del ?.
Greg Mattes,

1
@Greg: certo! La documentazione è stata l'aiuto di @ DragonLord. :-) E sì, mettere .invece di ?non fare esattamente la stessa cosa - il punto interrogativo impedisce un'ulteriore elaborazione da parte del sottosistema, mentre il punto significa "la macchina corrente" ... non esattamente la stessa cosa, anche se è sicuramente confondendo. :)
Mehrdad,

1
Non sono sicuro che ciò significhi davvero. Il \\.\ prefisso è per lo spazio dei nomi del dispositivo , ma non vi è alcuna menzione esplicita che .abbia lo stesso significato ("X corrente") come per i nomi delle directory.
gravità

4
In alternativa alla soluzione precedente se la directory di lavoro è già la directory con il nulfile, è possibile: del "\\?\%CD%\nul"La %CD%parte viene espansa nella directory di lavoro e le doppie virgolette ( ") consentono a tutti di gestire anche percorsi con simboli "dispari", ad es "\\?\C:\path,with\comma\nul".
HenrikB,

1
Non sembrava essere efficace da PowerShell o da un prompt amministrativamente elevato nel mio ambiente, ma funzionava efficacemente in un terminale standard.
Giustino il

13

In alternativa, se hai installato Cygwin , potresti voler sapere che non ha problemi con tali file o cartelle. Particolarmente,

rm -r /cygdrive/c/path/to/the/file/or/folder/you/want/to/delete

digitato nel terminale Cygwin elimina il file o la cartella denominata nulo una cartella, che lo contiene. Questo è applicabile anche ad altri nomi di file speciali come CON, PRN, AUX, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8.


2
funziona anche con git bash
c33s

Se hai installato Git, hai il rmcomando GNU, quindi non hai bisogno di Cygwin. Supponendo che tu aggiunga la directory bin degli strumenti GNU al tuo PERCORSO, puoi usare tutte le chicche GNU da cmd.
icc97,

8

Sto aggiungendo questo qui perché è alto nei risultati di Google e ho avuto un problema simile per una cartella denominata NUL. Sfortunatamente le correzioni precedenti non sono state d'aiuto. Né un sacco di altre cose che ho visto.

Ho provato rmdir\\?\C:\My\Path\NULe rmdir\\.\C:\My\Path\NULsenza successo e ho anche provato diversi comandi usando bash dalla mia installazione di SourceTree. Nessuna gioia.

Alla fine ho usato DIR /X /Ada cmd per elencare i nomi brevi nella directory principale. Questo è tornato NUL~1per la mia cartella NUL.

Questo è stato quindi utilizzato nel comando standard rmdir /s NUL~1e infine risolto il problema.


Hmm, è abbastanza intelligente usare il nome breve per bypassare il nome speciale.
SamB,

1

Se hai installato Git per Windows, procedi come segue

  1. Apri la directory contenente i file che desideri rimuovere
  2. Fare clic con il tasto sinistro e selezionare Git Bash Here
  3. Digitare rm nul.jsonal prompt dei comandi e premere INVIO, il file ora dovrebbe essere rimosso.

esegui Git Bash qui

NOTA: questi screenshot mostrano la rimozione del file nul.topo.jsonche è un altro file che non ho potuto rimuovere con una semplice eliminazione.

dopo l'esecuzione del comando

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.