Excluir arquivo contendo caracteres inválidos no Windows


16

Eu tenho alguns arquivos que contêm caracteres de dois pontos no nome do arquivo (por exemplo: 1d67c0d23e859ed4a259749e4a720d9e: default-sink). Quando tento removê-los da linha de comando com o comando:

c:\backup> del /F *.*

Recebo "O sistema não consegue encontrar o arquivo especificado". para cada arquivo. Se eu especificar um arquivo individual:

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

Eu recebo "O nome do arquivo, o nome do diretório ou a sintaxe do rótulo do volume está incorreta.". Se eu tentar usar rd na pasta pai, recebo

Como posso remover esses arquivos?


2
Esses arquivos foram criados na partição NTFS quando eu fui inicializado no Linux. Acho que vou ter que usar o disco de inicialização do Linux, pois parece que o Windows não gosta de dois pontos nos nomes de arquivos no nível do driver do sistema de arquivos.
Grom

Respostas:


22

Há um artigo da Microsoft KB que lista maneiras possíveis de excluir esses arquivos em:

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

A maneira como normalmente uso é o método API nativo:

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

De acordo com:

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

O :caractere é reservado no NTFS, o método nativo da API que mencionei acima é a maneira recomendada de excluir esses arquivos.


4
Isso não funciona para os dois pontos, pois é interpretado como um fluxo de dados nomeado.
Psusi

Isso funcionou para o meu caso. o arquivo que eu estava tendo o problema com continha uma vírgula,
Maher Fattouh

Obrigado, isso funcionou para mim. O arquivo terminou em um período. CA848D8F.
Mastro

11
Não funciona Meu nome do arquivo contém uma barra invertida.
Pacerier 11/03/19

Se o nome do arquivo contiver :o pedido do OP, esse método não funcionará. Use chkdskou exclua-o de um linux ativo.
Sourav Ghosh

15

Eu acho que você pode tentar o nome 8.3?

del /F 1d67c0~1

Observe que nas unidades NTFS você pode desabilitar explicitamente a funcionalidade 8.3, portanto, se esse for o caso, você não terá sorte com esta opção. Para obter o nome do arquivo dir adir /x

Costumava haver uma ferramenta freeware chamada, delinvfilemas elas foram alteradas para shareware / paga


Como eu pude fazer isso em um volume NTFS criado com o formatcomando com suporte a nomes 8.3 desativado?
precisa saber é o seguinte

11
@ user2284570 esse método não funciona. Quando escrevi essa resposta, a Microsoft tinha os nomes 8.3 ativados, mas atualmente está desativado por padrão.
Mark Henderson

@ MarkHenderson, Meu nome do arquivo é 7:2. Como uso o nome 8.3 para o nome do arquivo 7:2?
Pacerier 11/03/19

@Pacerier ver meu comentário anterior. Este método não funcionará em sistemas operacionais modernos. Windows XP ou mais antigo.
Mark Henderson

13

Isso funcionou para mim:

  1. Correu chkdsk /f
  2. PC reiniciado
  3. Pude selecionar e excluir o arquivo

4

Feche todos os arquivos, se houver algum aberto, salvos na unidade que contém esses arquivos. Agora, abra as propriedades da unidade.

"Meu Computador" -> "Clique com o botão direito nesta unidade"> propriedades

Em seguida, vá para a guia " Ferramentas " e clique em " Verificar agora " no rótulo 'Verificação de erros'.

insira a descrição da imagem aquiClique aqui para ampliar a imagem

Isso desmontará sua unidade e verificará se há erros na unidade completa; eventualmente, esses arquivos serão excluídos com nomes ilegais. Ao finalizar, será exibida uma mensagem informando que alguns arquivos foram corrigidos.

Excluí com êxito esses arquivos do meu disco rígido externo.


3

Eu tenho o Subsistema para aplicativos baseados em UNIX instalado no meu PC (Windows 7). No shell do Windows, posso criar um arquivo touch 1d67c0d23e859ed4a259749e4a720d9e:default-sinke removê-lo comrm *:*


Utilitários compatíveis com POSIX (como SFU) podem excluir esses arquivos.
Ausmith1

@JoeInternet: sigghh A Microsoft removeu todos os subsistemas que não são do Windows a partir de 2012.
precisa saber é o seguinte

... mas um subsistema unix está de volta na vitória 10.
user165568 31/01

1

Tente renomear a pasta pai para um único caractere (a, 1 etc.) e tente excluir a pasta pai. Se não funcionar, vá para a primeira pasta filha, renomeie-a para um único caractere e tente excluir novamente. Costumo usar esse método para arquivos com caracteres inválidos (não me pergunte como eles foram criados porque não sei) ou para arquivos em que o caminho excede o máximo (novamente, não pergunte como isso ocorre).


1

7zip pode excluir arquivos que o Windows falha; Eu o usei no passado ao lidar com nomes de arquivos longos, mas nunca tentei em arquivos com dois pontos. Eles normalmente seriam usados ​​para indicar ADS.


Isso ocorre porque o 7-zip usa o cygwin.
precisa saber é o seguinte

11
Não funciona para os meus arquivos. O primeiro arquivo tem nome de arquivo com barra invertida e o segundo arquivo tem nome de arquivo com dois pontos.
Pacerier 11/03/19

Não, é porque o 7-zip usa a API do Windows em vez do shell. Ele tem as mesmas limitações da API: acha que dois pontos indicam fluxos.
user165568

O 7zip funcionou para mim
user1278519

1

Eu tenho um sistema de inicialização dupla, e nenhuma das respostas acima funcionou para mim. Se o arquivo estiver localizado em um disco montado por seu outro sistema operacional (Ubuntu 16.04 LTS para mim), você poderá excluí-lo usando o outro sistema operacional;)


Isso é bastante razoável quando em um vínculo (embora não possa ser feito em uma máquina online). Além disso, a inicialização dupla nativa não é necessária, pois podemos inicializar uma distribuição ao vivo para fazer isso, como o disco de instalação do Fedora ou o Knoppix. NO ENTANTO, é preciso ter cuidado em um ambiente como esse, pois o driver NTFS3G que usamos para montar este sistema não respeita a maioria das permissões / ACLs do Windows (e é exatamente por isso que é tão eficaz para se livrar de arquivos "presos") .
Spooler

0

Você já tentou citar os nomes de arquivos? Dar o comando exato que você está executando seria útil.


Eu o adicionei ao comando exato que estou executando para questionar.
grom

0

Você já tentou usar um curinga? Por exemplo, 'del 1d67c0d23e859ed4a259749e4a720d9e *. *' Pode funcionar.


Você, eu tentei curingas. No luck
grom

11
A próxima coisa que penso é inicializar o sistema com um CD do Linux (como o CD de recuperação do sistema), montar o volume e tentar excluir a partir daí. Você pode obter resultados interessantes nesse ponto, como quem sabe o que realmente está acontecendo no sistema de arquivos.
Michael Kohne

@ MichaelKohne: Eu acho que usar uma implementação de caminho Unix também é a solução certa. Mas por que usar linux? O Windows é executado como um subsistema NT e já existe um subsistema POSIX / Unix NT.
user2284570

11
@ user2284570 - porque, devido ao fato de terem sido criados com o Linux, parece provável que o driver NTFS do linux tenha permitido algo que não deveria, o que nem o shell do POSIX do Windows pode ser capaz de passar pelo driver do sistema de arquivos. Muito mais simples para inicializar um CD linux ao vivo, remover o arquivo falso e reiniciar o Windows.
22630 Michael Kohne

@MichaelKohne: Não, porque os caminhos UNC já funcionam (subsistema nativo) e, com os subsistemas POSIX, não há acesso direto a fluxos de dados alternativos, para que você possa usar :arquivos internos.
precisa saber é o seguinte


0

Eu tinha uma pasta com uma vírgula no nome. Tentei algumas das sugestões acima e não consegui fazê-las funcionar.

Consegui excluir as pastas com o cygwin. A instalação desse aplicativo não é para todos, mas fará o trabalho.


0

Nenhuma das sugestões acima funcionou para mim. Eu usei o WinRar. Abra o winrar e você verá uma lista de arquivos, onde encontrará o arquivo suspeito "filename" (que foi criado por você como "filename: some_text.txt". Renomeie o arquivo no Winrar e forneça uma extensão (como .txt ou .doc).

Volte ao Windows Explorer e verá "filename .txt" (ou doc). Exclua a partir daí.

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.