Noticias:

Declaraciones en exclusiva de Cole Sear para nuestro reportero informativo de 106: "En ocasiones veo un foro."

Menú Principal

Renombrador masivo que haga...

Iniciado por danyof, 02 de Noviembre de 2011, 12:58

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

danyof

Tengo unas 300 o mas carpetas en las que en alguna parte del nombre aparece una cadena de fecha del tipo: 1-3-09 o tambien 1-03-09 o incluso 01-03-09... es decir, que lo unico que tienen en comun es que hay: (1 o 2 num)-(1 o 2num)-(2num).

Necesito un renombrador capaz de reconocer esa cadena y hacer una serie de cosas. Lo que quiero es pasar de: 1-3-09----> 2009-03-01 ( y que esto quede al comienzo del nombre)

Conoceis alguno que haga esto? Ya que he encontrado varios pero no te dan la opcion de "Uno o Dos numeros"

Gracias!! :D:D


danyof

#1
Edito: He encontrado uno, el flexible renamer, pero de momento me estoy pegando con el a ver si consigo encontrar la forma exacta de hacerlo... si alguien me echa un cable con este u otro programa.. :D gracias"

raul_isl


Thylzos

#3
Cita de: danyof en 02 de Noviembre de 2011, 12:58
Tengo unas 300 o mas carpetas en las que en alguna parte del nombre aparece una cadena de fecha del tipo: 1-3-09 o tambien 1-03-09 o incluso 01-03-09... es decir, que lo unico que tienen en comun es que hay: (1 o 2 num)-(1 o 2num)-(2num).

Necesito un renombrador capaz de reconocer esa cadena y hacer una serie de cosas. Lo que quiero es pasar de: 1-3-09----> 2009-03-01 ( y que esto quede al comienzo del nombre)

Conoceis alguno que haga esto? Ya que he encontrado varios pero no te dan la opcion de "Uno o Dos numeros"

Gracias!! :D:D



Si usas Linux, hazte un script. Si estás en Windows... pos hazte un script.

¿Tienes instalado Python? Si es así, en un momento te lo hago yo. Batch no domino mucho, pero si alguien de aquí sí lo hace, seguramente te lo pueda escribir.

EDITO: No lo probé xD. Pero debería funcionar.


import os,sys,re

contents=os.listdir('.') #contents of the current directory
for i in contents:
if os.path.isdir(i) and (finded=re.search("\d{1,2}-\d{1,2}-\d{2}",i)) != None:
d,m,y=finded.group(0).split('-')[:3]
y='20'+y
if len(m)==1:
m='0'+m
if len(d)==1:
d='0'+d
new_name=i.replace(finded.group(0),y+'-'+m+'-'+d)
os.rename(i,new_name)


Guárdalo como "renamer.py", por ejemplo y ejecútalo en el directorio en que tengas las carpetas con esos nombres.

Gracias freyi *.*


Cita de: Gambit en 26 de Enero de 2010, 10:25
Follar cansa. Comprad una xbox 360, nunca le duele la cabeza, no discute, no hay que entenderla, la puedes compartir con tus amigos...

danyof

Woww, Muchisimas gracias Thylzos aunque no tengo ni idea de python ni tampoco lo tengo instalado. No obstante si que entiendo el codigo y veo lo que se puede hacer con el. Y aunque mas o menos mi problema lo he resuelto simplemente ejecutando el programa en los diferentes casos posibles (1 o 2) digitos, acabo de descubrir que se pueden hacer estas cosas en windows con programacion. Interesantiiisimo

Una pregunta, esto solo se puede hacer con python? No se podra con C o C++ o algo asi? ya que C si que se algo. Que a mi el mundillo de la programacion me gusta, y si encima lo puedo utilizar en mi dia a dia...  mucho mejor!!

neoprogram

Cita de: danyof en 02 de Noviembre de 2011, 22:31
Una pregunta, esto solo se puede hacer con python? No se podra con C o C++ o algo asi? ya que C si que se algo. Que a mi el mundillo de la programacion me gusta, y si encima lo puedo utilizar en mi dia a dia...  mucho mejor!!

Posible es, aunque es más recomendable el uso de scripts de shell o lenguajes del estilo python por simplicidad.




たとえばここには愛すべき声があってあたしはそれすた守れなくて

danyof

Y que tengo que tener instalado o como he de hacer para hacer estas cosas y poder utilizar estos scripts? ya sea para python o para C/C++?

neoprogram

Cita de: danyof en 02 de Noviembre de 2011, 23:47
Y que tengo que tener instalado o como he de hacer para hacer estas cosas y poder utilizar estos scripts? ya sea para python o para C/C++?

Para los scripts de shell/Batch no necesitas tener instalado nada: Son ficheros que interpreta una consola de comandos (en el primer caso una shell de Linux, como puede ser bash; en el segundo caso el intérprete de comandos de windows).

Un ejemplo de Hola mundo en estos casos podría ser el siguiente (el programa que tú necesitas sería más largo y a estas horas no te lo puedo poner de ejemplo  :allid: ):

Código ("shell --> holaMundo.sh") [Seleccionar]

#!/bin/bash
echo "Hola mundo"
read -p "Pulse una tecla para continuar..."

Donde:
#!/bin/bash - indica a la shell con qué se debe ejecutar el script (en este caso, con la propia shell)
echo "..." - imprime un mensaje por pantalla
read -p - muestra el mensaje indicado a continuación y espera introducción de una línea por parte del usuario

Este script funcionaría desde una shell bash, dándole permisos de ejecución.

Código ("batch --> holaMundo.bat") [Seleccionar]

@echo off
echo "Hola mundo"
pause

Donde:
@echo off - oculta las llamadas en el intérprete y solo muestra los resultados
echo "..." - imprime un mensaje por pantalla
pause - muestra un mensaje y espera una pulsación de teclado

Este script funcionaría desde un intérprete de comandos Windows (doble click o consola del sistema).


Para utilizar un script de Python, tienes que tener previamente instalado un intérprete de Python. Tras este paso, para ejecutar los scripts puedes llamarlos como argumento del intérprete (Ej: python holaMundo) o ejecutarlos directamente si los tienes asociados al mismo (en windows, en linux puedes incluir como primera línea #!/bin/python  para que ejecute directamente).

Si lo hicieras en Java, tendrías que tener una máquina virtual de java (JRE/JDK)... y si fuera en otro lenguaje interpretado, su intérprete correspondiente.

Para hacerlo en C/C++ necesitarías o bien una librería de expresiones regulares o hacerte la búsqueda de la cadena de texto manualmente y renombrar con la función correspondiente.





たとえばここには愛すべき声があってあたしはそれすた守れなくて

Thylzos

Cita de: danyof en 02 de Noviembre de 2011, 22:31
Woww, Muchisimas gracias Thylzos aunque no tengo ni idea de python ni tampoco lo tengo instalado. No obstante si que entiendo el codigo y veo lo que se puede hacer con el. Y aunque mas o menos mi problema lo he resuelto simplemente ejecutando el programa en los diferentes casos posibles (1 o 2) digitos, acabo de descubrir que se pueden hacer estas cosas en windows con programacion. Interesantiiisimo

Una pregunta, esto solo se puede hacer con python? No se podra con C o C++ o algo asi? ya que C si que se algo. Que a mi el mundillo de la programacion me gusta, y si encima lo puedo utilizar en mi dia a dia...  mucho mejor!!

Hombre, como dice Neo, poder, se puede. Pero no con la simplicidad que podrías hacerlo con unscript de Python.

Para tareas como esta, renombrar archivos masivamente o matar ciertos procesos molestos del sistema o cambiar el contenido de todo un conjunto de archivos, es más cómodo usar scritps. Son rápidos de escribir, sencillos y tienen las herramientas ya hechas. C/C++ o Java están bien para proyectos más grandes en que importa más el rendimiento y la calidad del programa.

Para escribir scripts en Python, necesitas su máquina virtual: http://python.org/download/

Para escribir cosas en C/C++, un compilador. Te recomiendo CodeBlock (es un IDE, no un compilador, pero al caso...). http://www.codeblocks.org/downloads.

Si te interesa aprender C, te recomiendo hacerlo con este tutorial (lo encontré de casualidad y es muy completo y de muy buen nivel): http://c.learncodethehardway.org/book/

Y para aprender python: http://learnpythonthehardway.org/book/

Gracias freyi *.*


Cita de: Gambit en 26 de Enero de 2010, 10:25
Follar cansa. Comprad una xbox 360, nunca le duele la cabeza, no discute, no hay que entenderla, la puedes compartir con tus amigos...

Genki

podríais meteros a dar cursos de programación xDDD siguiendo el de peluche xD

yo este año estoy con Java, y el año pasado estuve con Pascal... pero vamos, vosotros vais a unos niveles superiores xD

Sorry but you are not allowed to view spoiler contents.

Últimos mensajes