Como posso excluir um arquivo com um caractere inválido no nome? (Win7)

5

Eu estou tentando excluir um arquivo chamado "Kanno, Yoko - onde este oceano vai? .Mp3" do meu disco rígido no Windows 7 Ultimate x64 e ele continua me dizendo que não pode porque o nome do arquivo é muito longo ou inválido (devido para o "?" nele). Não consigo renomeá-lo, não posso excluí-lo, não posso fazê-lo nem com o Explorer nem com o CMD. Também não consigo excluir a pasta que a contém nem com o Explorer nem com o CMD.

Alguém tem uma resposta ou sugestão para tentar? Eu não tenho idéia de como tal nome foi criado em primeiro lugar (software para renomear arquivos de acordo com o seu título, mas ainda assim, ele não deveria ter sido salvo com um nome inválido como esse). Independentemente disso, como posso agora me livrar disso?

Tio código macaco
fonte
Um arquivo não pode ser criado ou renomeado usando um nome de arquivo que contenha um '?' personagem. É um caractere curinga reservado. Talvez o seu sistema de arquivos tenha sido corrompido na camada de hardware.
É apenas uma entrada widcard para shell. AFAIK as chamadas do subsistema de disco não se importam.
starbolin
Todas as APIs do Windows irão se opor a esse nome de arquivo
David Heffernan
2
Os shells GUI no Linux podem ser objeto, mas duvido que as shells da linha de comando façam isso. * nix sempre permitiu curingas, adequadamente escapados, em nomes de arquivos.
David Heffernan
1
Um arquivo em um sistema de arquivos Unix / Linux típico pode conter caracteres especiais. Você pode especificar tal nome de arquivo na linha de comando, colocando-o entre aspas ou escapando dos caracteres especiais. Exemplo: vi whatFileIsThis\?.txtou vi "whatFileIsThis?.txt"No Linux, a expansão com curinga é realmente feita pelo shell em vez do aplicativo - as APIs de arquivo não manipulam curingas, ao contrário do Windows, onde elas ocorrem. Isso explica por que seu dispositivo Android conseguiu manipular o arquivo onde o Windows não podia.
fdmillion

Respostas:

3

Microsoft tem um artigo sobre difícil de apagar arquivos .

Na maioria das vezes para mim, prefixando o caminho \\?\faz exatamente o que eu quero. Então você poderia tentar del "\\?\c:\path\Kanno, Yoko - Where Does This Ocean Go?.mp3"

Há também \\.\e não sei qual é a diferença exata \\?\.

Ambos os prefixos parecem desabilitar algumas verificações e / ou fazer uso de APIs de nível mais baixo do que a API Win32 usual.

Josef
fonte
2

Resolvido: Liguei o disco rígido a uma caixa externa e conectei-o via USB ao meu tablet Android como uma unidade USB. Usando meu navegador de arquivos do Android, naveguei para esse arquivo e o excluí. O Android não permitirá que você nomeie arquivos com "?" neles, nem eu poderia jogar esse arquivo enquanto ele tinha um "?" ainda nele, mas Android deixe-me mudar o nome / copiar / mover / excluí-lo, então problema resolvido, mas não com Win7. FYI, eu poderia jogar o arquivo mp3 muito bem uma vez que eu removi o "?" do nome.

Tio código macaco
fonte
1

Eu só fiz isso e só estou respondendo para ajudar outras pessoas no Windows 7-10. Eu literalmente abri o local do arquivo no Winrar e mudei seu nome, somente porque o gerenciador de arquivos do windows não podia alterar o nome devido a ele ter um caracter inválido. Depois de mudar o nome, apaguei o arquivo. EZPZ também, boa escolha musical Eu amo Ghost in the Shell!

WubGub
fonte
0

Tente isso na linha de comando:

del Kanno*.mp3

Ou talvez tente encontrar o nome abreviado do arquivo e excluí-lo. Eu acho que dir / x irá listar os nomes curtos, mas minha lembrança é nebulosa.

A única coisa que posso imaginar que pode produzir é uma codificação de caracteres inválida. Quando o sistema encontra o texto que foi codificado incorretamente, ele pode exibir como "?".

O Windows é mais cuidadoso ao não permitir caracteres curinga em nomes de arquivos que alguns outros sistemas. Muitos anos atrás eu me lembro de um colega fazendo um arquivo chamado * em um sistema UNIX. Esse incidente não terminou com sorrisos.

David Heffernan
fonte
1
del * não funciona. Esse foi o meu problema original, pois a pasta inteira estava sendo excluída. "dir / x" não listou nenhum nome abreviado para o arquivo, embora haja um espaço nos oito primeiros caracteres.