Questão Como forçar o Windows para renomear um arquivo com um caractere especial?


Eu tenho uma música que o Windows não pode reproduzir porque há um ponto de interrogação no nome do arquivo.

"Where Have All the Cowboys Gone?.ogg" // as an example

Então eu tento renomeá-lo e o Windows reclama se eu tento no Explorer ou no prompt de comando.

Erro ao tentar copiar, renomear ou mover é:

O nome do arquivo, o nome do diretório ou a sintaxe do rótulo do volume está incorreta

Tem alguma janelas maneira de forçar uma renomeação neste caso?

Atualizar

Vou ficar de olho nesta questão, mas depois de 13 respostas e muitas tentativas (além de soluções de terceiros) parece que o Windows não pode fazer isso (ou pelo menos o meu windows não, não há nomes curtos). Então eu estou aceitando a resposta que era a minha solução original de qualquer maneira de usar o Linux. Seria bom ver o Windows lidar com isso de alguma forma, então não pare só porque eu aceitei essa resposta, a questão ainda permanece!


78


origem


Posso perguntar como você chegou a esse estado? O Windows geralmente não permite que você faça isso. - Michael Kohne
e a resposta é que peguei o arquivo de uma caixa do Linux. Na verdade, é um arquivo .ogg também. mas eu queria saber desde que eu estou no trabalho e não tenho meu linux como fazê-lo no windows ... seria bom saber - codeLes
você pode abrir cmd.exe e mostrar a saída do comando "dir" nesta pasta? pode ajudar ver como o windows vê o nome ... - Atmocreations
using dir mostra o arquivo com seu nome como eu listei na questão ... - codeLes
O sistema de arquivos NTFS permite alguns caracteres que o Windows não possui. Se o Windows atender esses arquivos, será b0rks. - Colonel Panic


Respostas:


Pegue um live-cd linux e use isso.


40



De casa eu uso linux de qualquer maneira ... e o arquivo está em um disco rígido portátil, eu estava pensando se o Windows poderia lidar com isso ... algo como um comando <b> Sudo </ b> windows ou algo assim - codeLes
Este é um problema de curinga, não um problema de permissão. Sob o linux, praticamente tudo é um caracter válido em um nome de arquivo (incluindo quebras de linha) no Windows, há um conjunto de caracteres reservados e nenhuma maneira eficaz de escapar deles. - salmonmoose
Certifique-se de que a distribuição do CD ao vivo tenha suporte confiável ao NTFS. Eu não tenho certeza como está indo agora, mas eu me lembro de ser um pouco de buggy um tempo atrás. - Josh Hunt
As distribuições linux recentes, como o ubuntu, suportam com sucesso os recursos mais importantes do NTFS. - Atmocreations
O Ubuntu 9.04 é absolutamente impecável no suporte a NTFS, com um ou dois aborrecimentos (como se houvesse um corte de energia, e você inicializar no ubuntu para economizar alguns segundos de inicialização, você não pode acessar sua partição do Windows até reinicializar) - Phoshi


Você tentou usar a versão de nome de arquivo curto de seu nome? Por exemplo

ren whereh~1.ogg where.ogg

Se for o único arquivo na pasta atual que começa com as primeiras letras, use as seis primeiras letras do nome (ignorando os espaços) seguidos de um til (~) e depois um 1.


29



Como a geração de nomes curtos é opcional, dependendo de como o Windows está atualmente configurado, Murphy diz que o OP tem nomes curtos desativados e o arquivo não terá um. Para aprender o nome abreviado, se estiver presente para qualquer arquivo, use DIR / X, que adicionará uma coluna mostrando o nome abreviado de qualquer arquivo em que ele diferir do nome longo, se tiver um. Se houver um nome curto, isso seria uma resposta plausível. - RBerteig
Você realmente deveria tentar ... Alguns nomes de arquivos curtos podem ser úteis. - alex
sem nomes abreviados, tentei o seu exemplo e também o dir / x prova que não há nenhum listado. - codeLes


  1. No Windows 7: Execute cmd.exe no Modo Administrador.
  2. cd no diretório com os nomes de arquivos.
  3. run: chkdsk / V / f [Meus arquivos ruins estavam em outra unidade diferente da unidade do sistema operacional, então ele foi capaz de desmontá-lo. Se for a unidade do sistema operacional, talvez seja necessário executar este estágio na inicialização.]
  4. Aguarde (pode ter que reiniciar).

Como você verá, o resultado foi que o chkdsk realmente apagou os arquivos para mim. Então, se você quiser manter os arquivos, eu não sei o que fazer, mas isso vai se livrar dos arquivos, com certeza.

Resultados / Log do Cmd:

E:\islag\Music\llb>dir
 Volume in drive E is FreeAgent Drive
 Volume Serial Number is 5038-892A

 Directory of E:\islag\Music\llb

02/02/2011  12:18 PM    <DIR>          .
02/02/2011  12:18 PM    <DIR>          ..
04/04/2010  02:19 PM         4,014,099 01 Los Lonely Boys - Se?orita - www.file2
4ever.com.mp3
04/04/2010  02:18 PM         3,125,942 12 Los Lonely Boys - La Contestaci?n - ww
w.file24ever.com.mp3
               2 File(s)      7,140,041 bytes
               2 Dir(s)  87,743,991,808 bytes free

E:\islag\Music\llb>chkdsk /V
The type of the file system is NTFS.
Volume label is FreeAgent Drive.

WARNING!  F parameter not specified.
Running CHKDSK in read-only mode.

CHKDSK is verifying files (stage 1 of 3)...
  231424 file records processed.
File verification completed.
  34 large file records processed.
  0 bad file records processed.
  0 EA records processed.
  0 reparse records processed.
CHKDSK is verifying indexes (stage 2 of 3)...
18 percent complete. (29338 of 245164 index entries processed)
An invalid filename 01 Los Lonely Boys - Se?orita - www.file24ever.com.mp3 (3196
6) was found in directory 31962.
All filenames for File 31966 are invalid.
Minor file name errors were detected in file 31966.
An invalid filename 12 Los Lonely Boys - La Contestaci?n - www.file24ever.com.mp
3 (31973) was found in directory 31962.
All filenames for File 31973 are invalid.
Minor file name errors were detected in file 31973.
73 percent complete. (233817 of 245164 index entries processed)
Index entry 01 Los Lonely Boys - Se?orita - www.file24ever.com.mp3 in index $I30
 of file 31962 is incorrect.
Index entry 12 Los Lonely Boys - La Contestaci?n - www.file24ever.com.mp3 in ind
ex $I30 of file 31962 is incorrect.
  245164 index entries processed.
Index verification completed.

Errors found.  CHKDSK cannot continue in read-only mode.

E:\islag\Music\llb>dir
 Volume in drive E is FreeAgent Drive
 Volume Serial Number is 5038-892A

 Directory of E:\islag\Music\llb

02/02/2011  12:18 PM    <DIR>          .
02/02/2011  12:18 PM    <DIR>          ..
04/04/2010  02:19 PM         4,014,099 01 Los Lonely Boys - Se?orita - www.file2
4ever.com.mp3
04/04/2010  02:18 PM         3,125,942 12 Los Lonely Boys - La Contestaci?n - ww
w.file24ever.com.mp3
               2 File(s)      7,140,041 bytes
               2 Dir(s)  87,743,991,808 bytes free

E:\islag\Music\llb>chkdsk /V /f
The type of the file system is NTFS.
Cannot lock current drive.

Chkdsk cannot run because the volume is in use by another
process.  Chkdsk may run if this volume is dismounted first.
ALL OPENED HANDLES TO THIS VOLUME WOULD THEN BE INVALID.
Would you like to force a dismount on this volume? (Y/N) y
Volume dismounted.  All opened handles to this volume are now invalid.
Volume label is FreeAgent Drive.

CHKDSK is verifying files (stage 1 of 3)...
  231424 file records processed.
File verification completed.
  32 large file records processed.
  0 bad file records processed.
  0 EA records processed.
  0 reparse records processed.
CHKDSK is verifying indexes (stage 2 of 3)...
18 percent complete. (29339 of 245164 index entries processed)
Deleted invalid filename 01 Los Lonely Boys - Se?orita - www.file24ever.com.mp3
(31966) in directory 31962.
File 31966 has been orphaned since all its filenames were invalid
Windows will recover the file in the orphan recovery phase.
Correcting minor file name errors in file 31966.
Deleted invalid filename 12 Los Lonely Boys - La Contestaci?n - www.file24ever.c
om.mp3 (31973) in directory 31962.
File 31973 has been orphaned since all its filenames were invalid
Windows will recover the file in the orphan recovery phase.
Correcting minor file name errors in file 31973.
73 percent complete. (233642 of 245164 index entries processed)
Deleting index entry 01 Los Lonely Boys - Se?orita - www.file24ever.com.mp3 in i
ndex $I30 of file 31962.
Deleting index entry 12 Los Lonely Boys - La Contestaci?n - www.file24ever.com.m
p3 in index $I30 of file 31962.
  245164 index entries processed.
Index verification completed.
CHKDSK is scanning unindexed files for reconnect to their original directory.
  2 unindexed files scanned.
CHKDSK is recovering remaining unindexed files.
  2 unindexed files recovered.
CHKDSK is verifying security descriptors (stage 3 of 3)...
  231424 file SDs/SIDs processed.
Cleaning up 41 unused index entries from index $SII of file 9.
Cleaning up 41 unused index entries from index $SDH of file 9.
Cleaning up 41 unused security descriptors.
Security descriptor verification completed.
  6871 data files processed.
CHKDSK is verifying Usn Journal...
  1116928 USN bytes processed.
Usn Journal verification completed.
Correcting errors in the master file table's (MFT) BITMAP attribute.
Windows has made corrections to the file system.

 244196000 KB total disk space.
 158175168 KB in 30003 files.
     22820 KB in 6873 indexes.
         0 KB in bad sectors.
    306168 KB in use by the system.
     65536 KB occupied by the log file.
  85691844 KB available on disk.

      4096 bytes in each allocation unit.
  61049000 total allocation units on disk.
  21422961 allocation units available on disk.

E:\islag\Music\llb>dir
 Volume in drive E is FreeAgent Drive
 Volume Serial Number is 5038-892A

 Directory of E:\islag\Music\llb

02/02/2011  12:18 PM    <DIR>          .
02/02/2011  12:18 PM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  87,743,979,520 bytes free

E:\islag\Music\llb>

23



Trabalhou como um encanto! obrigado - Oren S
Trabalhou perfeitamente! Esta deve ser a resposta. - enb081
@ enb081 Não, isso não deve ser a resposta, já que não tem nada a ver com a questão, que foi como renomear os arquivos. Sheesh - Jim Balter


chkdsk Às vezes, consertará nomes de arquivos inválidos. Você receberá uma mensagem sobre a remoção do arquivo porque todos os nomes de arquivo são inválidos e, em seguida, recuperará um arquivo perdido. Você pode então encontrar o arquivo em C:\found.000\file0000.chk. Esta é uma maneira eficaz de remover os arquivos problemáticos, mas não a melhor maneira de mantê-los.


10





Tente especificar o caminho UNC (veja Nomeando arquivos, caminhos e espaços para nome). Isso contorna todos os tipos de restrições. Você faria isso usando o \\?\ sintaxe.

Exemplo, se o seu arquivo estava em sua área de trabalho (e sua unidade do Windows é C :), você pode fazer

copy "\\?\C:\Users\codeLes\Desktop\Where Have All the Cowboys Gone?.ogg" "\\?\C:\Users\codeLes\Desktop\Where Have All the Cowboys Gone.ogg"

Nota: Você não pode usar caminhos relativos com esta sintaxe; você deve especificar o caminho completo. E isso não funciona com o ren comando, mas funciona com copy e move.


10



tentei, não tive sorte "O nome do arquivo, nome do diretório ou a sintaxe do rótulo do volume está incorreta." Obrigado! Estou chegando ao ponto em que acho que a resposta correta é usar o Linux para renomeá-lo (o que fiz). - codeLes
Essa resposta está definitivamente errada. A restrição de caracteres válidos está no driver NTFS no kernel do Windows. \\?\ apenas ignora o processamento do caminho do arquivo na biblioteca de tempo de execução do modo de usuário. Ele não permite a abertura de nomes de arquivos que contenham os 5 caracteres curinga (*? "<>), Outros caracteres reservados (/ |: \) ou caracteres de controle. - eryksun
Ele funciona no meu caso: Eu tinha um nome de arquivo com o caractere Unicode dentro e com arrastando \n . Não me pergunte como eu o criei (bem, estou tentando ver se você pode criar vários arquivos com o mesmo nome no Windows). Explorer, o FreeCommander não pôde deletá-lo, mas \\?\C:\... posso. - Dio Phung


A maneira que eu apaguei o arquivo teimoso foi abrindo 7zip, encontrando o arquivo e renomeando o arquivo por 7zip. O meu era uma música que tinha um espaço no final do arquivo.


8



Você quer dizer que o arquivo em si não estava nem em um arquivo, mas você acabou de usar o 7-Zip para renomeá-lo no sistema de arquivos? Inteligente. - Arjan
Isso funciona muito bem. Eu tentei várias das outras opções aqui, e esta foi a primeira que funcionou. - rakensi
O 7zip conseguiu renomear seu arquivo porque nomes de arquivos que terminam com espaços não são um problema no Windows. Nomes de arquivo contendo '?' são um problema, e 7zip não pode renomeá-los. - Jim Balter
RESPOSTA INCORRETA ! - user2284570
Isso funcionou perfeitamente para mim, porque o meu problema acabou por não ser pontos de interrogação reais, mas estranhos caracteres Unicode que apenas mostravam pontos de interrogação no meu gerenciador de arquivos. Ao importar os arquivos (havia centenas) para um arquivo 7-Zip e depois exportá-los novamente, o 7-Zip simplesmente converteu os caracteres ruins em sublinhados (_). Então eu pude trabalhar com os arquivos novamente. Problema completamente resolvido. Obrigado por uma excelente dica! - Jesper


Usar Recuva. Destina-se principalmente para recuperar arquivos excluídos, mas também tem uma opção para incluir arquivos não excluídos em sua varredura.

Depois de iniciar o Recuva, recuse o assistente e selecione o disco correto. Em seguida, vá para Opções, localize e marque a opção "verificar arquivos não excluídos" e inicie a verificação. Depois de um tempo, ele mostrará todos os arquivos no disco (excluídos ou não). Encontre seus arquivos com nomes inválidos (os nomes já estão fixos na visualização), selecione-os, clique com o botão direito e salve ("recuperar") em algum lugar.

enter image description here

Acabei de fazer isso (no Windows XP).


6





A ferramenta Microsoft DISKEDIT.EXE é uma ferramenta de baixo nível para ler e gravar diretamente dados brutos do disco. Você deve ser capaz de carregar o cluster contendo a entrada de diretório para este arquivo e apenas alterar o '?' personagem para algo inócuo e gravá-lo de volta para o disco.

É meu entendimento que a ferramenta de disquete da Microsoft (não a ferramenta Norton Utilities com o mesmo nome, que é apenas para volumes FAT) foi vista pela última vez no Windows 2000 SP4. Mas há um link para ele que pode ser encontrado Aqui.

Para localizar o cluster certo, você pode baixar uma versão de teste do DiskExplorer para NTFS.

Você começaria com File-> Drive ... para abrir a unidade que contém esse arquivo inválido. Selecione Goto-> Diretório Raiz para obter uma visualização de diretório. Navegue até o diretório que contém seu arquivo inválido usando os links MFT #. Quando você chegar lá, a parte superior da janela dirá algo como "MFT # x12345 DIR: 'dirname', ... blá blá blá ... iniciando no cluster x9302AE,... blá blá blá"

Agora vá para o diskedit da Microsoft. Primeiro faça Arquivo-> Abrir ... e especifique Nome do Volume C: (se o arquivo estiver na sua unidade C:). Deixe o nome do arquivo de volume em branco. Pegue o número do cluster inicial e insira-o no diskedit em Read-> NTFS Clusters ...-> Starting Cluster (insira-o como um número hexadecimal).

Agora use as teclas de seta para ir até o nome do arquivo incorreto. Está em unicode, então você estará procurando por algo como "W.h.e.r.e..H.a.v.e. .A.l.he.h.e..C.o.w.b.o.s.s.G.o.n.e.? ... o.g.g". Posicione o cursor sobre o caractere "3F" incorreto e digite algo seguro, como 5F ('_'). Escolha Write-> It para gravar de volta no disco.

Há outro ponto para acertar (não tenho certeza se um ou ambos são necessários). Agora, de volta ao DiskExplorer, clique no Mft # para o arquivo incorreto. Você terá uma tela com uma coisa de árvore à esquerda que diz "estruturas". Clique em "Atributos" na árvore. Ele mostrará uma lista de atributos, um dos quais será algo como $ 30 ... $ FILE_NAME. Então, $ 30 tem o nome do arquivo. Clique no nó Corpo abaixo do nó $ 30 na árvore Estruturas. Selecione o menu Exibir-> como Hex. Várias linhas abaixo, você deve ver o nome do arquivo novamente W.h.e.r.e. .H.a.v.e ... etc. No lado esquerdo da tela, você verá a coluna Sector, que mostra qual setor de disco você está visualizando.

De volta ao diskedit. Do Read-> Sectors ... e insira o número do setor no DiskExplorer. Como antes, role para baixo e substitua o caractere "3F" pelo mesmo caractere que você fez acima. Escolha Write-> It para gravar no disco.

Eu fiz tudo isso, e as ferramentas me dizem que eu mudei o personagem, mas o explorador não. O diretório deve estar em algum lugar. Depois de uma reinicialização, a alteração fica visível.


5



+1 para a abordagem correta (mas mais ou menos impraticável), esperando que ela borbole um pouco e ultrapasse pelo menos algumas das respostas erradas. ;) - Sz.


Tente usar uma ferramenta de terceiros, como a Ken Renomear ferramenta:

Screenshot of Ken Rename

ou Renomear mestre.

enter image description here

Aqui está uma lista de ferramentas de renomeação de arquivos.

Eu mesmo os testaria, mas estou executando o Windows Vista de 64 bits; o manuseio do arquivo pode ser diferente.

Se essas ferramentas falharem, você pode querer dar Windows PowerShell um tiro. Vejo Renomeando arquivos no Blog do Windows PowerShell.


5



não tinha tentado uma ferramenta de terceiros. - codeLes
Eu tentei Directory Opus, e não funcionou (mesma mensagem de erro). - user14068
Eu tentei flexível Renamer 8.4, que parece fazer o truque. Proveniente do mesmo site que você mencionou. - JohnnyBizzle


Você já tentou movê-lo para um arquivo com o nome certo?

move "Where Have All the Cowboys Gone?.mp3" "Where Have All the Cowboys Gone.mp3"

4



tentou, sem sorte. "O nome do arquivo, o nome do diretório ou a sintaxe do rótulo do volume está incorreta" - codeLes
Funcionou para mim com o copy comando. - Nicolas
@ Nicolas, quer dizer que houve um ? ou * ou < ou > ou : no nome e copy-ing só funcionou? (Eu apenas tentei e não para mim, sem surpresa.) - Sz.
@Sz. desculpe ouvi-lo não funcionou para você. Eu não lembro o nome do arquivo que eu tive que renomear, mas funcionou para mim com o nome copy comando. Você também tentou cygwin e o comando bash mv? - Nicolas
@ Nicolas, obrigado por tentar ajudar, mas meu ponto é que esses caracteres que eu listei acima (e alguns outros, como ", |, /e, claro, a barra invertida (que eu não consigo entrar aqui :))) estão em uma classe diferente de chars problemáticos (reservado), e eu estou com medo, nem o copy comando nem Cygwin pode começar a renomeá-los. (Você provavelmente tinha alguns caracteres diferentes em seu nome de arquivo problemático.) - Sz.


  • Se for mais de um arquivo, crie um novo diretório com um nome simples, por exemplo a.
  • Mova um único arquivo de cada vez para esse diretório.
  • Dentro cmd.exe vá para o novo diretório e digite o seguinte:

    ren *.ogg 1.ogg   
    

    Isso é para simplificar. Então você pode renomeá-lo no XP como quiser, como 1.ogg para Where Have All the Cowboys Gone.ogg. ogg foi apenas um exemplo, a extensão pode ser qualquer coisa.


4



Hã? Como você deve mover esse arquivo (do OP) com o caractere curinga em seu nome? - Sz.