Como faço para remover um arquivo chamado "NUL" no Windows?


49

Eu tenho uma caixa do Windows XP (sistema de arquivos NTFS) na qual encontrei um arquivo chamado NUL. Não consegui remover este arquivo da maneira usual. O arquivo parece pertencer Administratorao SYSTEMgrupo, diferente de qualquer outro arquivo no mesmo diretório (os outros arquivos pertencem ao meu ID de usuário).

Como faço para me livrar desse arquivo? De onde veio?


3
NUL é uma palavra reservada do sistema; veja este artigo da Wikipedia . Um arquivo chamado NUL nunca deve existir no sistema de arquivos; isso pode ser causado por software com erros. Você pode removê-lo usando o DELETEcomando usando o Prompt de Comando.
BwDraco 11/05

9
@DragonLord: O sistema de arquivos não tem problemas com esses nomes; por exemplo, você pode criar esses arquivos em um ambiente POSIX. (É possível encontrar aux.cnomes semelhantes no código-fonte do software.) É apenas a API do Win32 que gerencia esses "nomes de dispositivos".
grawity

O mesmo se aplica a CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9 e RELÓGIO. $ mais alguns outros - consulte en.wikipedia.org/wiki/…
robocat 30/04/2015

Cygwin cria (ou costumava) um arquivo chamado "nul", geralmente visto em "C: \ cygwin \ dev \ nul". É o que eu acerto uma vez a cada poucos anos, no Google, e sou trazido de volta (de novo) a essa pergunta.
Zarchasmpgmr

Respostas:


83

Experimentar

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

no prompt de comando.

Consulte este artigo de suporte da Microsoft para obter detalhes: Você não pode excluir um arquivo ou uma pasta em um volume do sistema de arquivos NTFS , em "Causa 5: O nome do arquivo inclui um nome reservado no espaço para nome do Win32".


11
Obrigado! Isso funcionou! Além disso, obrigado pela excelente referência à documentação autorizada. Encontrei algo em uma pesquisa na web que era muito semelhante, mas não funcionou. Essa sugestão .substituiu o ?.
Greg Mattes

11
@ Greg: Claro! A documentação foi a ajuda de @ DragonLord. :-) E sim, colocar em .vez de ?não faz exatamente a mesma coisa - o ponto de interrogação impede o processamento adicional pelo subsistema, enquanto o período significa "a máquina atual" ... não exatamente a mesma coisa, embora seja definitivamente confuso. :)
Mehrdad

11
Não tenho certeza se isso realmente significa isso. O \\.\ prefixo é para o espaço de nome do dispositivo , mas não há menção explícita que .tenha o mesmo significado ("X atual") do nome dos diretórios.
grawity

4
Como alternativa à solução acima, se o seu diretório de trabalho já estiver no diretório com o nularquivo, você pode: del "\\?\%CD%\nul"A %CD%peça é expandida para o diretório de trabalho e as aspas duplas ( ") fazem com que tudo lide também com nomes de caminho com símbolos "ímpares", por exemplo "\\?\C:\path,with\comma\nul".
HenrikB

11
Não parecia ser eficaz no PowerShell ou em um prompt administrativo elevado no meu ambiente, mas funcionava efetivamente em um terminal padrão.
JustinC

13

Como alternativa, se você tiver o Cygwin instalado, convém saber que ele não tem problemas com esses arquivos ou pastas. Particularmente,

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

digitado no terminal Cygwin exclui o arquivo ou pasta nomeada nulou uma pasta que o contém. Isto também se aplica a outros nomes de arquivos especiais, como CON, PRN, AUX, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8.


2
também trabalha com o bash git
c33s

Se você instalou o Git, terá o rmcomando GNU para não precisar do cygwin. Supondo que você adicione o diretório bin do GNU tools ao seu PATH, você pode usar todos os itens do GNU do cmd.
icc97

8

Estou adicionando isso aqui, porque é alto nos resultados do google e tive um problema semelhante para uma pasta chamada NUL. Infelizmente, as correções acima não ajudaram. Nem uma tonelada de outras coisas que eu olhei.

Eu tentei rmdir\\?\C:\My\Path\NULe rmdir\\.\C:\My\Path\NULsem sucesso e também tentei vários comandos usando o bash da minha instalação do SourceTree. Sem alegria

No final, usei DIR /X /Ado cmd para listar os nomes abreviados no diretório pai. Isso retornou NUL~1para minha pasta NUL.

Isso foi usado no comando padrão rmdir /s NUL~1e finalmente corrigido o problema.


Hmm, é muito inteligente usar o nome abreviado para ignorar o nome especial.
Samb

1

Se você possui o Git for Windows Installed, faça o seguinte

  1. Abra o diretório que contém os arquivos que você deseja remover
  2. Clique com o botão esquerdo e selecione Git Bash Here
  3. Digite rm nul.jsonno prompt de comando e pressione ENTER; o arquivo agora deve ser removido.

execute o Git Bash aqui

NOTA: Essas capturas de tela mostram a remoção do arquivo, nul.topo.jsonque é outro arquivo que não foi possível remover com uma simples exclusão.

após a execução do comando

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.