elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  renombrar archivos bat
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: renombrar archivos bat  (Leído 14,257 veces)
charlyta

Desconectado Desconectado

Mensajes: 4


Ver Perfil
renombrar archivos bat
« en: 11 Marzo 2012, 20:01 pm »

Hola. Estoy realizando mis primeras prácticas con batch y he empezado intentando renombrar archivos tipo: x(1).txt, xx(2).txt, etc..
He logrado renombrar un archivo pero no el resto, he uintentado hacer un bucle pero no sé como incorporal una variable para hacer de contador y eliminar (1), (2)

este es mi code

Código:
@echo off
echo ****RENOMBRADOR DE ARCHIVOS****
echo .
echo .
echo Presiona Ctrl+C para abortar o ...
pause
rename ?(1).txt ?.txt
exit


En línea

charlyta

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: renombrar archivos bat
« Respuesta #1 en: 11 Marzo 2012, 20:29 pm »

solucionado!  alguien podria explicármelo por favor?

Código
  1. @echo off
  2. for %%i in (*.txt) do (set fname=%%~ni) & call :renameFile
  3. goto :eof
  4. :renameFile
  5. ren "%fname%.txt" "%fname:~0,-3%.txt"
  6. goto :eof


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.824



Ver Perfil
Re: renombrar archivos bat
« Respuesta #2 en: 12 Marzo 2012, 01:16 am »

alguien podria explicármelo por favor?

Ese FOR procesa cada archivo con extensión .txt, y guarda en una variable el nombre del archivo (Sin la extensión), y luego lo renombra cortando los 3 últimos digitos...


Quizás así lo entiendas mejor:



Código
  1. @echo off
  2. for %%i in (*.txt) do (Echo Procesando el archivo: "%%i" & set fname=%%~ni) & call :renameFile
  3.  
  4. :renameFile
  5. Echo Variable %%FNAME%% es:   "%Fname%"
  6. Echo ren "%fname%.txt" "%fname:~0,-3%.txt"
  7. ren "%fname%.txt" "%fname:~0,-3%.txt"
  8. cls
  9. goto :eof


Salu2
En línea

-- KiLiaN --


Desconectado Desconectado

Mensajes: 1.163


Ju Já!!


Ver Perfil
Re: renombrar archivos bat
« Respuesta #3 en: 12 Marzo 2012, 14:30 pm »

Perdona pero a mi en el codigo que has dejado si lo pongo asi:
for /D %%i in (*.zip) do (Echo "%%i" & set fname=%%~ni & echo %fname%) siempre me aparece vacia ("") la variable %fname% pero luego no, sabrias decirme el porque?

PD: Si, tengo varias carpetas que acaban en .zip, las he renombrado yo para hacer pruebas..

Gracias de antemano ;)

EDITO:

Vale, lo que yo queria hacer que es renombrar carpetas que acaben en .avi (porque se descargan asi) a su nombre pero sin ese molesto .avi xD en fin quedo asi:

Código:
for /D %%i in (*.avi) do (Echo "%%i" & "ren %%i" "%%~ni") 
« Última modificación: 12 Marzo 2012, 14:52 pm por -- KiLiaN -- » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.824



Ver Perfil
Re: renombrar archivos bat
« Respuesta #4 en: 12 Marzo 2012, 14:49 pm »

Perdona pero a mi en el codigo que has dejado si lo pongo asi:
for /D %%i in (*.zip) do (Echo "%%i" & set fname=%%~ni & echo %fname%) siempre me aparece vacia ("") la variable %fname% pero luego no, sabrias decirme el porque?

Ya te lo digo yo, Para usar variables dentro de un for, tienes que expandir...

Código
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. for %%i in (*.zip) do (Echo "%%i" & set "fname=%%~ni" & echo !fname!)

O puedes llamar a un procedimiento para mostrar la variable...

Código
  1. @echo off
  2. for %%i in (*.zip) do (Echo "%%i" & set "fname=%%~ni" & call :Print)
  3.  
  4. :Print
  5. echo %fname%
  6. Goto :EOF

PD: El parámetro "/D" Solo afecta a carpetas, No a archivos ".zip"... Si tienes más dudas, lee un manual.

Salu2
En línea

-- KiLiaN --


Desconectado Desconectado

Mensajes: 1.163


Ju Já!!


Ver Perfil
Re: renombrar archivos bat
« Respuesta #5 en: 12 Marzo 2012, 14:55 pm »

Se me olvido decirtelo, ya expandi como tu decias. He modificado el post anterior cuando tu me estabas respondiendo (perdon por tardar xD) y ya lo hice, sigo sin saber que fallaba (ME fallaba) pero lo solucione para lo que realmente queria y me vino muy bien ver tu codigo, hace tiempo que no programo en batch.. ;D en fin tio muchas gracias.

VUELVO A EDITAR ¬¬:
Ahora que me he fijado con mas detenimiento en el codigo que me has puesto no entiendo para que son los signos de exclamacion? cuando llamas la variable fname, podrias explicarmelo brevemente o darme algun link con su correspondiente documentacion?

for %%i in (*.zip) do (Echo "%%i" & set "fname=%%~ni" & echo !fname!)
« Última modificación: 12 Marzo 2012, 14:57 pm por -- KiLiaN -- » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.824



Ver Perfil
Re: renombrar archivos bat
« Respuesta #6 en: 12 Marzo 2012, 15:01 pm »

no entiendo para que son los signos de exclamacion?

podrias explicarmelo brevemente o darme algun link con su correspondiente documentacion?

http://ss64.com/nt/delayedexpansion.html

 :P
En línea

-- KiLiaN --


Desconectado Desconectado

Mensajes: 1.163


Ju Já!!


Ver Perfil
Re: renombrar archivos bat
« Respuesta #7 en: 12 Marzo 2012, 15:28 pm »

Gracias tio me sirvio ;) a ver si me he enterado bien: esto lo que haces es cambiar las variables en el momento de la ejecucion en vez de cuando esta leyendo el script por ejemplo el ejemplo que me has dejado tu en el enlace:

Setlocal EnableDelayedExpansion
Set _var=first
Set _var=second& Echo %_var% !_var!


La linea que esta en negrita primero se "lee" o se analiza por el interprete de comandos y a la hora de ejecutarla cambia o expande la variable a su segundo valor. Las exclamaciones (!!) se usan para darle el valor expandido a la variable.
Ves ahora entiendo totalmente ejemplo ;) y ya se porque se porque a mi se me veia vacia xD de nuevo gracias.
En línea

charlyta

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: renombrar archivos bat
« Respuesta #8 en: 12 Marzo 2012, 18:09 pm »

 :huh: Pues yo no entiendo esto:


Código:
%%~ni
En línea

charlyta

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: renombrar archivos bat
« Respuesta #9 en: 12 Marzo 2012, 18:15 pm »

aunque esto es más fácil:

Código:
@echo off

FOR /R %%x in (*.txt) DO echo %%x

pause
rename *???.txt ?.txt

exit
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda para renombrar archivos
Scripting
indruin 2 4,660 Último mensaje 7 Julio 2012, 00:50 am
por Eleкtro
Subida multiple con uploadify y renombrar los archivos
PHP
Crash_RPM 4 4,681 Último mensaje 17 Agosto 2012, 22:24 pm
por Crash_RPM
Utilizar uploadify y renombrar los archivos
Desarrollo Web
Crash_RPM 2 2,742 Último mensaje 22 Agosto 2012, 12:17 pm
por Crash_RPM
[batch] copiar y renombrar archivos [resuelto]
Scripting
imlikeabird34 2 10,740 Último mensaje 27 Diciembre 2012, 15:19 pm
por imlikeabird34
renombrar archivos
Scripting
asdexiva 2 3,180 Último mensaje 8 Julio 2013, 23:40 pm
por asdexiva
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines