Windows Impossível Excluir ._. Arquivo

91

Atualmente, tenho um arquivo na raiz do meu disco rígido externo simplesmente chamado ._., que acho que foi adicionado ao meu disco rígido depois de usá-lo no meu MacBook há um tempo. Estou tentando excluir este arquivo na minha máquina Windows 10; no entanto, o Windows continua alegando que o arquivo não pode ser encontrado.

Mensagem de erro do Windows Explorer

Eu também tentei excluir o arquivo através de um prompt de comando elevado; no entanto, a mesma mensagem é retornada.

Mensagem de erro do prompt de comando elevado

Existe alguma maneira de excluir este arquivo do meu disco rígido através do Windows?

Mike Koch
fonte
7
@ rr - a miséria que você pode fazer com nomes de arquivos unix tende a ser muito maior. : 3
Martijn
5
Seu prompt de comando mostra algo estranho. Você find "._."deixou de lado as aspas para del ._.. Você tentou del "._."?
jpmc26
1
fenômeno interessante. especialmente o quão difícil é excluir. Tem certeza de que o arquivo foi criado legitimamente? (o nome dele soa bastante estranho, mesmo para um mac) #
Thomas
30
Minha parte favorita é a expressão do arquivo de suas tentativas de excluí-lo.
Workman
8
"._."Você não pode excluir isso porque os coalas são uma espécie protegida.

Respostas:

146

Execute o seguinte comando (pode exigir privilégios elevados / prompt de comando aberto como administrador):

del "\\?\F:\._."

Sobre o \\?\prefixo :

Para E / S de arquivo, o \\?\prefixo " " para uma cadeia de caminho diz às APIs do Windows para desativar toda a análise de cadeia e enviar a cadeia que a segue diretamente ao sistema de arquivos.

...

Como desativa a expansão automática da cadeia de caracteres do caminho, o \\?\prefixo " " também permite o uso de " .." e " ." nos nomes dos caminhos, o que pode ser útil se você estiver tentando executar operações em um arquivo com esse caminho relativo, caso contrário reservado. especificadores como parte do caminho completo.

Observe que você não pode usar o \\?\prefixo " " com um caminho relativo.

Exemplo :

==> set prog>"\\?\D:\bat\Unusual Names\._."

==> dir "D:\bat\Unusual Names\*"|find "._."
08.11.2015  13:25               132 ._.

==> type "D:\bat\Unusual Names\._."
The system cannot find the file specified.

==> type "\\?\D:\bat\Unusual Names\._."
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files

==> del "D:\bat\Unusual Names\._."
Could Not Find D:\bat\Unusual Names\._.

==> del "\\?\D:\bat\Unusual Names\._."

==> dir "D:\bat\Unusual Names\*"|find "._."

==>
JosefZ
fonte
É possível usar esse prefixo com uma URL, todos os startcomandos?
Steven Penny
Você não usa isso com um URL. Você usa aspas duplas se desejar executar um URL a partir do comando start.
Nelson
1
... Isso pode ser usado para contornar limites de comprimento? (Por exemplo, exclua um node_modulesdiretório.)
jpmc26 10/11
1
@ jpmc26 Conforme o MSDN (consulte o link fornecido na minha resposta), sim. No entanto, conheci cenários em que o \\?\ prefixo usado delou os rmdircomandos não ajudavam. Virado para 7-zipo gerenciador de arquivos.
10119 JosefZ
2
@ jpmc26: Pode ignorar alguns limites de comprimento. Basicamente, um caminho expandido tem um limite de comprimento de 32K. Mas a maioria dos caminhos gosta C:\Windowsou ..não é expandida, e esses têm um limite de comprimento de apenas 260. Esse limite de 260 é imposto em muitos lugares; infelizmente, alguns desses lugares incorretamente aplicam esse limite também aos caminhos `\\?`
MSalters
24

Mesmo que a pergunta já tenha sido respondida, eu ainda gostaria de oferecer uma solução alternativa possível: o uso dos "nomes abreviados" herdados (que você pode exibir com a opção "/ x" no comando dir) também pode permitir controle arquivos com nomes "descolados" que você não pode manipular de outra forma:

C:\temp\test>dir
 Volume in drive C has no label.
 Volume Serial Number is 887A-5E48

 Directory of C:\temp\test

11.11.2015  16:31    <DIR>          .
11.11.2015  16:31    <DIR>          ..
11.11.2015  16:31                 7 ._.
               1 File(s)              7 bytes
               2 Dir(s)  44.966.129.664 bytes free

C:\temp\test>dir /x
 Volume in drive C has no label.
 Volume Serial Number is 887A-5E48

 Directory of C:\temp\test

11.11.2015  16:31    <DIR>                       .
11.11.2015  16:31    <DIR>                       ..
11.11.2015  16:31                 7 _3E35~1      ._.
               1 File(s)              7 bytes
               2 Dir(s)  44.966.129.664 bytes free

C:\temp\test>del _3e35~1

C:\temp\test>dir
 Volume in drive C has no label.
 Volume Serial Number is 887A-5E48

 Directory of C:\temp\test

11.11.2015  16:31    <DIR>          .
11.11.2015  16:31    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  44.966.129.664 bytes free
Convidado
fonte
20

Instale o 7-zip , abra-o e use seu menu de arquivos para renomear o arquivo para um nome normal (por exemplo, para aaa) e, em seguida, você pode excluí-lo. Encontrado neste post.

Eu testei isso no Windows XP executando em uma VM. Eu usei o Linux para criar um arquivo chamado ._.em um diretório compartilhado.

NZD
fonte
-4

Apenas op no seu Windows Explorer, navegue até o arquivo. Renomeie o arquivo como: filename.txt Agora você pode excluí-lo. Se você não conseguir fazer isso, precisará ter direitos de administrador.

(entre o motivo pelo qual você não pode excluí-lo é porque o nome do arquivo não tem nome e a extensão não é válida. O nome do arquivo é "." e a extensão é "__.", o que não é permitido.)

Arie Klep
fonte
1
@ The_IT_Guy_You_Don't_Like Estou curioso, onde OP mencionou isso?
Muru
@ Arie Klep, retiro minhas palavras. Eu devo ter lido isso em outra pergunta semelhante
pun
-8

Você pode excluir o arquivo 1) Assumir a propriedade 2) conceder aos administradores (você) permissão total 3) Faça o que quiser com o arquivo

Prompt de CMD elevado

takeown / f Caminho completo para o arquivo não eliminável (o último item deve ser o arquivo não eliminável)

icacls Caminho completo para administradores de arquivos / concessões não excluídos: f

Excluir arquivo

user53336
fonte
26
O problema parece ser que o Windows não consegue acessar o arquivo, por causa de seu nome de arquivo não conforme, por isso ficaria muito surpreso se essa resposta funcionasse.
Scott