Atualizado :
Supomos que "clip-2009-10-01 21; 26; 00.mov" não seja o nome do arquivo real; Uma possibilidade é que o nome real do arquivo seja "clip-2009-10-01 21: 26: 00.mov". No entanto, não podemos verificar isso no Windows.
Podemos não precisar.
Método à prova de falhas :
Inicialize em um LiveCD do Linux. O Ubuntu 9.04 tem um bom suporte a NTFS, e o Linux lida com muito mais caracteres-em-filigrances do que o Windows. O script de renomeação perl pode ser incluído como o comando de renomeação do sistema.
This-Might- Na verdade -Work Batch Method (Novo Script!)
O comando DOS DIR / X mostra nomes de arquivos curtos, se eles existirem no seu sistema .
$ cmd
c:\test> dir /x
Volume in drive E is NUVOL
Volume Serial Number is 80D3-A96D
Directory of e:\tor\test
10/04/2009 05:15 AM <DIR> .
10/04/2009 05:15 AM <DIR> ..
10/04/2009 05:11 AM 0 CLIP-2~1.MOV clip-2009-10-01 21;26;00.mov
1 File(s) 0 bytes
2 Dir(s) 5,201,670,144 bytes free
Se eles existirem, o comando REN os moverá para um novo nome; o novo nome pode ser um novo nome de arquivo longo (válido).
c:\test> ren CLIP-2~1.MOV "clip-2009-10-01_21-26-00.mov"
Isso é como consertar um.
Para processar em lote todos eles, você precisa 1) pegar uma lista de todos os arquivos que deseja mover; 2) execute um script perl curto para converter sua listagem em um arquivo de lote com os comandos REN apropriados; e 3) execute o script em lote resultante.
c:\test> dir /x > mybrokenfiles.lst
$ cat mybrokenfiles.lst | perl -lne 'next if not /MOV/; s/^.{1,39}//; s/^/ren /; s/ (\d\d);(\d\d);(\d\d)/_$1-$2-$3/; print' > fixmybrokenfiles.bat
c:\test> fixmybrokenfiles.bat
A linha de comando perl assume um formato de entrada muito particular, portanto, se a lista do DOS mostrar nomes extensos de arquivos em algo diferente do formato "21; 26; 00.mov", provavelmente não fará exatamente o que você deseja. Se você tentar, verifique novamente se o script em lote está correto antes de executá-lo.
Se você estiver confortável com o perl (ou sed / awk, python, o que for), você pode fazer o script sozinho. Mas se DIR / X não mostrar os nomes de arquivos curtos, seu sistema os desativará e esta solução não ajudará.
Resposta original : não é útil com o que sabemos agora, mas se você copiar esse tipo de arquivo do OSX novamente, poderá usar isso ANTES da cópia como uma medida preventiva.
Eu uso bastante a linha de comando nos sistemas Windows e Linux. Há um prático script perl flutuando na Internet que permite renomear arquivos em lote usando o padrão regex perl (google para rename.pl para encontrá-lo).
Em Cygwin no Windows, use isso no diretório em que seus arquivos estão localizados para renomeá-los:
$ ls
clip-2009-10-01 21;26;00.mov
$ rename.pl 'tr/ ;/_-/;' *
$ ls
clip-2009-10-01_21-26-00.mov
Tenho certeza de que minha versão veio do Perl Cookbook :
#!/usr/bin/perl -w
# rename - Larry's filename fixer
$op = shift or die "Usage: rename expr [files]\n";
chomp(@ARGV = <STDIN>) unless @ARGV;
for (@ARGV) {
$was = $_;
eval $op;
die $@ if $@;
rename($was,$_) unless $was eq $_;
}