Questão Windows não é possível excluir ._. Arquivo


Eu atualmente tenho um arquivo na raiz do meu disco rígido externo simplesmente chamado ._., que eu estou supondo que foi adicionado ao meu disco rígido depois de usá-lo no meu MacBook há um tempo atrás. 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.

Error message from Windows Explorer

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

Error message from elevated command prompt

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


91


origem


@ rr- a miséria que você pode fazer com nomes de arquivos unix tende a ser muito maior. : 3 - Martijn
Seu prompt de comando mostra algo estranho. Você fez find "._." mas deixou de fora as citações para del ._.. Você tentou del "._."? - jpmc26
fenômeno interessante. especialmente o quão difícil é excluir. Tem certeza de que o arquivo foi legitimamente criado? (a nomenclatura soa muito estranha mesmo para um mac) - Thomas
Minha parte favorita é a expressão do arquivo de suas tentativas de excluí-lo. - Workman
"._." Você não pode excluir isso porque os koalas são uma espécie protegida.


Respostas:


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

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

Sobre a \\?\ prefixo:

Para arquivo I / O, o "\\?\"prefixo para uma string de caminho diz ao Windows   APIs para desabilitar todas as análises de string e para enviar a string que segue   direto para o sistema de arquivos.

...

Porque desativa a expansão automática da cadeia de caminho, o   "\\?\"prefixo também permite o uso de".."e"."no caminho   nomes, que podem ser úteis se você estiver tentando executar operações   em um arquivo com esses especificadores de caminho relativo reservados, como   parte do caminho totalmente qualificado.

Note 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 "._."

==>

143



Trabalhou como um campeão, obrigado! - Mike K
É possível usar esse prefixo com uma URL, al a start comando? - Steven Penny
... Isso pode ser usado para ignorar limites de comprimento? (Por exemplo, excluir um node_modules diretório.) - jpmc26
@ jpmc26 Como no MSDN (veja o link fornecido na minha resposta), sim. No entanto, conheci cenários em que \\?\  prefixo usado em del ou rmdir comandos não ajudaram. Virou-se para 7-zip gerenciador de arquivos. - JosefZ
@ jpmc26: Pode ignorar alguns limites de comprimento. Basicamente, um caminho expandido tem um limite de comprimento de 32K. Mas a maioria dos caminhos como C:\Windows ou .. não são expandidos, e esses têm um limite de comprimento de apenas 260. Esse limite de 260 é aplicado em muitos lugares; infelizmente, alguns desses lugares aplicam incorretamente esse limite também aos caminhos `\\?`. - MSalters


Embora a pergunta já tenha sido respondida, ainda gostaria de oferecer uma solução alternativa possível: usar os "nomes curtos" legados (que você pode exibir com a opção "/ x" para o comando dir) também pode permitir que você controle os arquivos com nomes "funky" 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

24





Instalar 7-zip, abra-o e use o menu Arquivo para renomear o arquivo para um nome normal (por exemplo, aaa) e, em seguida, você pode excluí-lo. Encontrado em esta postar.

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


20





Apenas op o 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 certeza de que possui direitos de administrador.

(btw 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 é "__." que não é permitida).


-4



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


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

Prompt de CMD elevado

takeown / f Full Path para Undeletable File (último item deve ser o arquivo undeletable)

Caminho completo de icacls para administradores de arquivos / concessões Undeletable: f

Excluir arquivo


-8



O problema parece ser que o Windows não pode acessar o arquivo, devido ao seu nome de arquivo não-conforme, então eu ficaria muito surpreso se essa resposta funcionar. - Scott