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?

grom
fonte
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
Relacionados: superuser.com/q/31587/320611
David Refoua

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.

Ausmith1
fonte
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

Mark Henderson
fonte
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
JohnB
fonte
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.

Atul Vaibhav
fonte
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 *:*

Joe Internet
fonte
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).

joeqwerty
fonte
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.

Dentrasi
fonte
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;)

Ang Black
fonte
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.

mulher
fonte
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.

Michael Kohne
fonte
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

Você já tentou o dir / X para descobrir o nome 8.3 real e, em seguida, tentou excluir esse nome?

Ou esse arquivo pode ter um fluxo de dados alternativo? Você pode olhar para ele com a ferramenta em http://www.nirsoft.net/utils/alternate_data_streams.html para ver o que isso pode lhe dizer (nunca usei essa ferramenta, ela surgiu quando procurei) .

Michael Kohne
fonte
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.

Rich MacDonald
fonte
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í.

Prashant Lamba
fonte