Script do Windows 7 para alterar parte de um nome de arquivo

0

Eu tenho uma coleção de arquivos cujos nomes estão no formato car-#######-NNNNNNN.xxx , onde ####### é uma série de números que precisam ser mantidos como parte do nome do arquivo, e xxx é uma extensão que denota o formato do arquivo, como "jpg", "bmp" ou "png". que também precisa ser mantido. Preciso remover o car- e o -NNNNNNN (duplicação do -####### ) do nome do arquivo, deixando apenas #######.xxx .

Isso é possível e como eu poderia fazer isso?

    
por Obsidian 08.09.2014 / 07:58

3 respostas

0

Copie este texto em um editor de texto (Notepad) e salve o arquivo como rename.bat na pasta onde os arquivos estão localizados e execute-o.

Altere xxx na linha IF %ext% EQU xxx ren %1 "%fnum%.%ext%" para a extensão em que seus arquivos foram salvos.

@ECHO OFF
for /f "tokens=*" %%i ^
in ('forfiles /d +0 /c "cmd /c if @isdir==FALSE echo @file"') ^
do call :subroutine %%i
pause

:subroutine
set fname=%1
set ext=%fname:~-4,3%
set fnum=%fname:~5,7%
REM echo %fnum%
REM echo %ext%
IF %ext% EQU xxx ren %1 "%fnum%.%ext%"
    
por 08.09.2014 / 09:17
0

O gerenciador de arquivos do Windows não fornece funcionalidade complexa de renomeação de vários arquivos com o uso de padrões ou expressões regulares (ao contrário dos gerenciadores de arquivos normais).

Eu recomendaria fazer o trabalho no linux se você tiver uma distribuição Linux disponível. Basta usar o Nautilus e você poderá renomear em massa e usar a funcionalidade de pesquisa / substituição baseada em padrões.

Como alternativa, se você não tiver acesso à distribuição do Linux, tente instalar o Total Commander . Este gerenciador de arquivos tem boa funcionalidade de renomeação em massa. Você também pode ler um bom guia em esta página .

    
por 08.09.2014 / 09:39
0

A resposta de Vinayak parece boa se o seu ####### tiver sempre exatamente sete caracteres. Se o número de caracteres puder variar e você quiser trabalhar pelo delimitador em vez de contar, tente

for /f "delims=-. tokens=1-4" %a in ('dir /b/a-d car-*-*.*') ^
                                    do @echo ren %a-%b-%c.%d %b.%d

Execute isso e, se ele mostrar os comandos de renomeação corretos, exclua o echo e execute-o novamente. Eu divido isso em duas linhas para que coubesse na tela; Se preferir, você pode criar uma linha (exclua o ^ ). Se você colocar isso em um script (arquivo em lote), altere todas as ocorrências de % para %% .

Atenção: se o seu NNNNNNN não é sempre uma duplicata do seu ####### , Por exemplo, você tem arquivos chamados car-1234567-1234567.jpg e car-1234567-9999999.jpg , isso renomeará o primeiro que encontrar e dará mensagens de erro para os outros.

    
por 17.09.2014 / 19:02