Cómo cambiar el nombre eliminando el último nombre de la parte de varios archivos

Cómo cambiar el nombre eliminando el último nombre de la parte de varios archivos

Tengo varios archivos para cambiar el nombre.

Por ejemplo: ERKS 400001_thumb.jpg
    ERKS 500124_thumb.jpg
    ERKS 100004_thumb.jpg

Quiero cambiar el nombre de los archivos anteriores como:

Por ejemplo: 00400001.jpg
    00500124.jpg
    00100004.jpg

Utilicé este código, pero no pude obtener el resultado que necesito.

@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

Si ejecuto el código anterior el resultado es este:

Por ejemplo: 00400001_thumb.jpg
    00500124_thumb.jpg
    00100004_thumb.jpg
¿Cómo puedo cambiar el nombre de los archivos?

Respuesta1

Querrá utilizar la siguiente sintaxis para lo que explica en este caso particular. Tienes que agregar una barra inferior delimitadora adicional._personaje y también agrega una ficha más para que 1-4. Con el token y el delimitador adicionales, agregué la part4variable para brindarte el resultado esperado.

Dado que esto parece estar relacionado con mi respuesta para usted enesta publicación, Pensé que también ayudaría con esto.

Todos los archivos 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

Si tiene una carpeta con archivos JPG con la palabra "pulgar" y otros sin la palabra "pulgar", puede usar esta secuencia de comandos a continuación para cambiar solo aquellos que tienen la palabra "pulgar" a medida que describe en tu pregunta.

Solo archivos JPG con nombre en miniatura

@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: ingrese la descripción de la imagen aquí


Recursos adicionales

Respuesta2

El siguiente fragmento de código muestra dos posibles soluciones:

Guion(tenga en cuenta que el comando operativo RENAMEsimplemente se muestra con ECHOfines de depuración y demostración):

@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"
  )
)

Producción:

==> 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"

==>

Respuesta3

Es un fragmento de código que tengo desde hace un tiempo. Le solicita que ingrese el sufijo (jpg), luego el destino de la cadena (_thumbs) y finalmente la cadena de reemplazo (déjelo en blanco para reemplazar la cadena con una cadena vacía).

@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%!"
)

En tu caso: ejecute este archivo por lotes por primera vez: destino "ERKS" reemplazo "00";sincitas. La segunda ejecución: objetivo "_thumbs" reemplazado por "". Simplemente presione ENTER sin ingresar nada si desea que el reemplazo esté en blanco (sin caracteres).

Respuesta4

si tienes

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

el resto es pan comido. Dado que sus archivos parecen tener la misma longitud de caracteres, simplemente haga un

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

y tendrás:

00400001.jpg 00500124.jpg 00100004.jpg

información relacionada