[Batch] cambiar ultimos caracteres "ren" [Solucionado]

Iniciado por romanjr, 16 Febrero 2011, 02:13 AM

0 Miembros y 1 Visitante están viendo este tema.

romanjr

saludos a todos los del foro, una vez mas yo con otra pregunta

como puedo cambiar el nombre de una serie de archivos pero solo su ultimo caracter, es decir tengo varios archivos:

Código (dos) [Seleccionar]
hola_1_nada-.jpg
hola_2_nada-.jpg
...
...
hola_10_nada-.jpg
hola_11_nada-.jpg
...
...
hola_100_nada-.jpg

como se daran cuenta la cantidad de caracteres varia segun el consecutivo, asi que, ¿ como puedo cambiar el nombre de todos los archivos quitando solo el ultimo caracter?

ya intente con
ren *-.jpg *.jpg
ren *?-.jpg *.jpg
y otras combinaciones pero los resultados son desastrozos
alguna idea... de antemano muchas gracias

leogtz

#1
Prueba esto:

Suponiendo que tienes el Batch en donde están las imágenes:

Código (dos) [Seleccionar]
@echo off

for /f "tokens=*" %%_ in ('dir /b *.jpg') do (
call:rename "%%_"
)

goto:eof

:rename
set "name=%~n1"
set "name=%name:~0,-1%"
rename %1 %name%.jpg
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

romanjr

Gracias leo por contestar, dejame probarlo, te aviso y otra vez gracias

leogtz

Acabo de editar el código, copia y pega el nuevo, por favor.

PD: Estoy por contestar a tu otra duda.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

romanjr

stimadoleo... este batch si no se que pase, pero no quita el ultimo caracter del nombre del archivo??? me manda un error que dice:

la sintaxis del comando no es correcta

dejame ver que es lo que estoy haciendo mal de todos modos tu aportacion es  bienvenida

gracias

romanjr

Estimado leo... ya le di.... como el burro que toco la flauta  :laugh: habia una falta de caracteres  en el codigo, el codigo queda asi:

@echo off

for /f "tokens=*" %%_ in ('dir /b *.jpg') do (call:renombra "%%_")
goto:eof

:renombra
set "name=%~n1"
set "name=%name:~0,-1%"
ren "%~1" "%name%.jpg"

una ve mas gracias a tu codigo pude resolverlo

espero podamos seguir escribiendo y que me sigas aclarando misdudas ya que eres una eminencia.

gracias y saludos