Como renomear removendo o último nome da parte para vários arquivos

1

Eu tenho vários arquivos para renomear.

Eg: ERKS 400001_thumb.jpg
    ERKS 500124_thumb.jpg
    ERKS 100004_thumb.jpg

Eu quero renomear os arquivos acima como:

Eg: 00400001.jpg
    00500124.jpg
    00100004.jpg

Eu usei este código, mas não consegui o resultado de que preciso.

@ECHO ON

SETLOCAL ENABLEDELAYEDEXPANSION
SET SourceDir=F:\Square.....

FOR /F "TOKENS=1-3 DELIMS=. " %%F IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
  SET "part1=%%~F" 
  SET "part2=%%~G" 
  SET "part3=%%~H"
  REN "%SourceDir%\!part1! !part2!.!part3!" "00!part2!.!part3!"
)
GOTO EOF

Se eu executar o código acima, o resultado é este:

Eg: 00400001_thumb.jpg
    00500124_thumb.jpg
    00100004_thumb.jpg
Como posso renomear os arquivos?

    
por Ezhilarasan 22.09.2016 / 06:46

4 respostas

1

Você vai querer usar a sintaxe abaixo para o que você explica neste caso particular. Você precisa adicionar um caractere _ à barra delimitadora adicional e também adicionar mais um token, então 1-4 . Com o token e o delimitador adicionais, adicionei a variável part4 para obter o resultado esperado.

Como isso parece estar relacionado à minha resposta para você em este post , eu imaginei que ajudaria com isso também.

Todos os arquivos JPG

@ECHO ON

SETLOCAL ENABLEDELAYEDEXPANSION
SET SourceDir=F:\Square.....

FOR /F "TOKENS=1-4 DELIMS=._ " %%F IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
  SET "part1=%%~F" 
  SET "part2=%%~G" 
  SET "part3=%%~H"
  SET "part4=%%~I"
  REN "%SourceDir%\!part1! !part2!_!part3!.!part4!" "00!part2!.!part4!"

)
GOTO EOF

Se você tem uma pasta com arquivos JPG com a palavra "thumb" e outros sem a palavra "thumb", você pode usar este script abaixo para alterar apenas aqueles com a palavra "thumb" em como você descreve em sua pergunta.

Thumb Apenas arquivos JPG

@ECHO ON

SETLOCAL ENABLEDELAYEDEXPANSION
SET SourceDir=F:\Square.....

FOR /F "TOKENS=1-4 DELIMS=._ " %%F IN ('DIR /B /A-D "%SourceDir%\*thumb.jpg"') DO (
  SET "part1=%%~F" 
  SET "part2=%%~G" 
  SET "part3=%%~H"
  SET "part4=%%~I"
  REN "%SourceDir%\!part1! !part2!_!part3!.!part4!" "00!part2!.!part4!"
  ECHO "%SourceDir%\!part1! !part2!!part3!.!part4!" "00!part2!.!part4!"
)
GOTO EOF

NOTA:

Mais recursos

por 22.09.2016 / 07:46
1

O próximo snippet de código mostra duas soluções possíveis:

Script (observe que o comando operacional RENAME é meramente exibido usando ECHO para fins de depuração e demonstração):

@ECHO OFF >NUL
SETLOCAL EnableExtensions DisableDelayedExpansion

SET "SourceDir=D:\bat\SU\Files26981" change to meet your circumstances

echo if _thumb part is fixed
FOR /F "TOKENS=1-3 DELIMS=. " %%F IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
  SET "part1=%%~F" 
  SET "part2=%%~G" 
  SET "part3=%%~H"
  SETLOCAL EnableDelayedExpansion
    echo REN "%SourceDir%\!part1! !part2!.!part3!" "00!part2:_thumb=!.!part3!"
  ENDLOCAL
)

echo(
echo if _thumb part could vary, e.g. _thumb, _thumbnail, _thumbsketch
FOR /F "TOKENS=*" %%g IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
  FOR /F "TOKENS=1-4 DELIMS=_. " %%F IN ("%%~g") DO (
    echo REN "%SourceDir%\%%~g" "00%%~G.%%~I"
  )
)

Saída :

==> D:\bat\SU26981.bat
if _thumb part is fixed
REN "D:\bat\SU\Files26981\ERKS 100004_thumb.jpg" "00100004.jpg"
REN "D:\bat\SU\Files26981\ERKS 400001_thumb.jpg" "00400001.jpg"
REN "D:\bat\SU\Files26981\ERKS 500124_thumb.jpg" "00500124.jpg"
REN "D:\bat\SU\Files26981\ERKS 900009_thumbnail!.jpg" "00900009nail!.jpg"

if _thumb part could vary, e.g. _thumb, _thumbnail, _thumbsketch
REN "D:\bat\SU\Files26981\ERKS 100004_thumb.jpg" "00100004.jpg"
REN "D:\bat\SU\Files26981\ERKS 400001_thumb.jpg" "00400001.jpg"
REN "D:\bat\SU\Files26981\ERKS 500124_thumb.jpg" "00500124.jpg"
REN "D:\bat\SU\Files26981\ERKS 900009_thumbnail!.jpg" "00900009.jpg"

==>
    
por 22.09.2016 / 08:16
0

É um pedaço de código que eu tive por um tempo agora. Solicita que você insira o sufixo (jpg) e, em seguida, o string target (_thumbs) e, finalmente, a string de substituição (deixe em branco para substituir a string pela string vazia).

@echo off
Setlocal enabledelayedexpansion

ECHO Enter the suffix target (e.g. txt, jpg):
Set /P Suffix= 
ECHO Enter Target String:
Set /P Pattern=
ECHO Enter Replacement String (or leave blank):
Set /P Replace=

For %%# in ("*.%Suffix%") Do (
    Set "File=%%~nx#"
    Ren "%%#" "!File:%Pattern%=%Replace%!"
)

No seu caso : execute este arquivo em lote 1a vez: segmente "ERKS" substituto "00"; sem citações. A segunda execução: target "_thumbs" substituída por "". Basta pressionar ENTER sem inserir nada se quiser que a substituição fique em branco (sem caractere).

    
por 22.09.2016 / 08:07
0

Se você tiver

00400001_thumb.jpg 00500124_thumb.jpg 00100004_thumb.jpg

o resto é um pedaço de bolo. Como seus arquivos parecem ter o mesmo comprimento de caracteres, faça um

ren *.jpg ????????.jpg

e você terá:

00400001.jpg 00500124.jpg 00100004.jpg

    
por 22.09.2016 / 08:45