¿Cómo puedo cambiar el nombre de un grupo de archivos como
admin_ball_126608454.gma
another_thing_384157357.gma
a
ds_126608454.gma
ds_384157357.gma
¿Cómo puedo cambiar el nombre de un grupo de archivos como
admin_ball_126608454.gma
another_thing_384157357.gma
a
ds_126608454.gma
ds_384157357.gma
Respuestas:
Podrías probar este script. Se le solicita cada vez que se va a cambiar el nombre de un archivo. Puede eliminar este comportamiento eliminando la cláusula IF..ELSE del script. La solicitud se agregó para garantizar que no renombra accidentalmente carpetas o renombra archivos con un nombre incorrecto
@echo off
setlocal EnableDelayedExpansion
SET /P path=Enter the path please :
ECHO The Path entered is %path%.
CD %PATH%
ECHO Current Directory is %CD%
FOR /R %path% %%G IN (*.*) DO (
SET name=%%~nG
SET last=!name:~-10!
SET/P cho="ECHO File !name!%%~xG will be renamed to ds_!last!%%~xG Do you want to continue (y/n) ?"
IF !cho!==y (REN "!name!%%~xG" "ds_!last!%%~xG") ELSE (ECHO Not Renamed)
)
pause
Puedes usar substring o regex. Agregue -whatif
para realizar una prueba de funcionamiento, pero sin cambiar nada. Estoy seguro de que hay muchas más formas de hacer esto en PowerShell
Dir "C:\yourfolder" | ren -NewName {
"ds" + $_.basename.substring($_.basename.length-10,10) + $_.extension
} -whatif
Dir "C:\yourfolder" | ren -NewName {$_.name -replace "^.*(?=.{10}\.)","ds"}
Usamos una búsqueda anticipada (?= )
para unir todo ^.?
antes de los últimos 10 caracteres.{10}
Dir "C:\yourfolder" | ren -NewName {$_.name -replace '(.*)(.{10}\.)', 'ds$2'}
Usamos dos grupos de captura (...)(...)
y solo conservamos el segundo $2
. Aquí tienes que usar en '
lugar de"