
Eu tenho vários arquivos para renomear.
Por exemplo: ERKS 400001_thumb.jpg ERKS500124_thumb.jpg ERKS 100004_thumb.jpg
Quero renomear os arquivos acima como:
Ex.: 00400001.jpg 00500124.jpg 00100004.jpg
Usei esse código, mas não consegui obter o resultado 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 será este:
Por exemplo: 00400001_thumb.jpg 00500124_thumb.jpg 00100004_thumb.jpgComo posso renomear os arquivos?
Responder1
Você desejará usar a sintaxe abaixo para o que explicar neste caso específico. Você precisa adicionar uma barra inferior delimitadora adicional_
personagem e também adicione mais um token 1-4
. Com o token e o delimitador adicionais, adicionei a part4
variável para fornecer o resultado esperado.
Como isso parece estar relacionado à minha resposta para você emesta postagem, pensei em ajudar 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ê tiver uma pasta com arquivos JPG com a palavra "thumb" e outras sem a palavra "thumb", você pode usar este script abaixo para alterar apenas aqueles com a palavra "thumb" conforme você descreva na sua pergunta.
Apenas arquivos JPG nomeados como polegar
@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
Recursos adicionais
Responder2
O próximo trecho de código mostra duas soluções possíveis:
!part2:_thumb=!
, verEditar/Substituir Variável- outra abordagem não requerExpansão Atrasadahabilitado
Roteiro(observe que o comando operacional RENAME
é exibido apenas ECHO
para fins de depuração e demonstração):
@ECHO OFF >NUL
SETLOCAL EnableExtensions DisableDelayedExpansion
SET "SourceDir=D:\bat\SU\Files\1126981" 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\SU\1126981.bat
if _thumb part is fixed
REN "D:\bat\SU\Files\1126981\ERKS 100004_thumb.jpg" "00100004.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 400001_thumb.jpg" "00400001.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 500124_thumb.jpg" "00500124.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 900009_thumbnail!.jpg" "00900009nail!.jpg"
if _thumb part could vary, e.g. _thumb, _thumbnail, _thumbsketch
REN "D:\bat\SU\Files\1126981\ERKS 100004_thumb.jpg" "00100004.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 400001_thumb.jpg" "00400001.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 500124_thumb.jpg" "00500124.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 900009_thumbnail!.jpg" "00900009.jpg"
==>
Responder3
É um pedaço de código que já tenho há algum tempo. Solicita que você insira o sufixo (jpg), depois o destino da string (_thumbs) e, finalmente, a string de substituição (deixe em branco para substituir a string por uma 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 pela primeira vez: destino "ERKS" substituição "00";semcitações. A segunda execução: destino "_thumbs" substituído por "". Basta pressionar ENTER sem inserir nada se quiser que a substituição fique em branco (sem caracteres).
Responder4
Se você tiver
00400001_thumb.jpg 00500124_thumb.jpg 00100004_thumb.jpg
o resto é moleza. Como seus arquivos parecem ter o mesmo comprimento de caracteres, basta fazer um
ren *.jpg ????????.jpg
e você terá:
00400001.jpg 00500124.jpg 00100004.jpg