Como renomear em lote arquivos copiados do OSX para o Windows com ':' em nomes de arquivos?

3

Isso é realmente intrigante. Eu tenho muitos vídeos que foram armazenados usando o Mac OS, e agora eu tenho que editá-los no Windows XP. Eu copiei arquivos usando o HFSExplorer. Software de edição se recusa a abrir os arquivos com seus nomes atuais, e até agora eu não encontrei uma maneira de lote renomear todos os arquivos.

Os nomes dos arquivos são assim:

clip-2009-10-01 21; 26; 00.mov

Mas eu suspeito que no OSX a hora era 21:26:00.

Eu gostaria de substituir o espaço por um sublinhado e ponto e vírgula por traço.

Eu experimentei vários aplicativos de renomeação em massa, com; e:, mas em vão. Também tentei rename.pl, mas também em vão.

    
por tputkonen 01.10.2009 / 20:37

11 respostas

4

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 $_;
}
    
por 01.10.2009 / 22:07
2

Confira Renomear mestre , ele tem uma infinidade de Maneiras de manipular nomes de arquivos em lote. Você deseja verificar a guia substituir .

Rename Master é freeware.

    
por 01.10.2009 / 20:54
1

Renomear Lupas é um programa FREEWARE desenvolvido para renomear um grande número de arquivos. Funciona em Win95, Win98, WinME, WinNT, Win2K e WinXP. É um simples arquivo .exe e não precisa de nenhuma outra biblioteca externa.

Aqui estão alguns dos recursos:

  • Renomear arquivos e pastas
  • Renomear arquivos em subdiretórios recursivos
  • Integração do shell (clique com o botão direito do mouse em uma pasta no explorer para iniciar o LupasRename nessa pasta)
  • Pré-visualização instantânea (opcional)
  • Desfazer a última operação de renomeação
  • Crie um arquivo em lote para renomear a partir de um console do DOS
  • Crie um arquivo em lote para operação UNDO em um console do DOS
  • Salvar e carregar suas opções em um arquivo INI
  • Filtre por qualquer máscara: .mp3; .mp2 ou ??? a * .txt ...
  • Substituir uma substring por outra com o Matchcase Opcional
  • Substituir uma substring por outra com o Matchcase opcional na extensão

    
por 01.10.2009 / 20:56
1

Faça isso no mac ou no linux. Isso renomeará todos os arquivos e pastas com um: para a -

find . -depth -exec rename 's/:/-/g' * {}\;
    
por 23.01.2012 / 21:06
0

O Total Commander inclui uma ferramenta de renomeação em lote chamada Multi-Rename Tool (o atalho padrão é Ctrl + M).

No seu caso, você pode renomear os arquivos executando o processo duas vezes, uma vez para substituir o espaço e uma vez para substituir o ponto-e-vírgula.

Outra maneira é usar renomear máscara - selecionar intervalo antes do espaço, adicionar sublinhado, depois variar após o espaço, enquanto substitui o ponto e vírgula por traço usando Pesquisar e substituir.

    
por 01.10.2009 / 22:19
0

Semelhante a um couiple das outras soluções, o Bulk Rename Utility é um utilitário que fará o trabalho . Acho muito útil e fácil de usar para minhas necessidades de renomeação de arquivos em massa.

    
por 02.10.2009 / 13:28
0

Quais são as permissões no arquivo? Tem certeza de que você tem permissão para renomeá-los? Se não, tome posse dos arquivos e tente novamente.

    
por 04.10.2009 / 13:35
0

Problema interessante.

Você pode escrever seu próprio script personalizado. Aqui está um script que funcionará. Ele irá substituir todos os COLONS, SEMICOLONS, ESPAÇOS COM SUBLINHOS. Eu assumirei que os arquivos estão em E: / e os nomes seguem o padrão do clipe * .mov. Você pode alterar esses valores no script para seus valores corretos. Você pode personalizar o script ainda mais, se desejar.

# Script Mac2WindowsFileTransfer.txt
# Go to directory where files are stored.
cd "E:/"                                     ### CHANGE THIS TO YOUR CORRECT VALUE. ###
# Get a list of clip*.mov files.
var str list ; lf -rng "clip*.mov" > $list   ### CHANGE THIS TO YOUR CORRECT VALUE. ###
# Go thru files one by one.
while ($list <> "")
do
    # Get the next file.
    var str file
    lex "1" $list > $file
    # Create the new name.
    var str newname
    stex -p "^/^l[" $file > $newname
    # REPLACE ALL COLONS, SEMICOLONS,  SPACES WITH UNDERSCORE.
    while ( { sen -r "^(\:\; )^" $newname } > 0 )
        sal -r "^(\:\; )^" "_" $newname
    # Rename file.
    system rename ("\""+$file+"\"") $newname
done

Salve o script como C: /Scripts/Mac2WindowsFileTransfer.txt. O script está no biterscripting ( link ). Você pode baixar o biterscripting gratuitamente. Execute o comando digitando o seguinte comando em biterscripting.

script "C:/Scripts/Mac2WindowsFileTransfer.txt"

Patrick

    
por 03.11.2009 / 16:54
0

Use um live CD do Linux para acessar a pasta com os arquivos e, em seguida:

rename -v 's/\:|\*|\?|\"//g' "{}" \; *.mov

Isso removerá a maior parte do que o Windows não queria. Por exemplo,

2004-01-02_23:58:22.mpg

se tornará:

2004-01-02_235822.mpg
    
por 06.05.2010 / 06:41
0

Eu mesmo, eu gosto da resposta de @ ~ quack. +1.

Mas, para a posteridade, aqui está o que eu ia postar.

Estou usando o StExBar nas ferramentas de Stefan por um bom tempo agora. Adiciona uma barra de ferramentas ao Windows Explorer com várias funções úteis.

link

(Ele tem várias ferramentas, mas essa específica é a StExBar)

Você pode realizar sua renomeação solicitada com dois comandos simples. Aqui está uma captura de tela do primeiro, que mostra uma prévia dos arquivos que estão sendo renomeados e o que eles serão renomeados.

    
por 01.10.2009 / 22:36
0

Supondo que os nomes dos arquivos contenham caracteres estranhos e invisíveis, a maneira de proceder é usar nomes DOS do antigo formato 8.3. Para descobrir esses nomes, use o parâmetro -x:

Agora,useonomeabreviadopararenomearoarquivo:

renCLIP-2~1.MOV"clip-2009-10-01_21_26_00.mov"

Se você usar copiar e colar para renomear o arquivo, tome cuidado para não propagar os caracteres estranhos, portanto não deixe caracteres em branco no novo nome (porque eles podem não estar realmente em branco).

    
por 04.10.2009 / 14:39