Foros del Web » Programando para Internet » ASP Clásico »

Renombrar masivamente

Estas en el tema de Renombrar masivamente en el foro de ASP Clásico en Foros del Web. Hola a todos: Tengo una carpeta en la que dentro hay otras 35 carpetas más. En total hay 500.000 fotos y todos los nombres están ...
  #1 (permalink)  
Antiguo 13/02/2007, 13:19
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 21 años, 2 meses
Puntos: 0
Renombrar masivamente

Hola a todos:
Tengo una carpeta en la que dentro hay otras 35 carpetas más.
En total hay 500.000 fotos y todos los nombres están separadas por guión bajo (_) .

Necesito hacer un código que las recorra todas y renombre el guión bajo por _-_ en el lugar en que parte de la cadena es diferente
Voy a poner por ejemplo tres cadenas.

the_rolling_stones_forty_licks_back.jpg
the_rolling_stones_the_last_nearness_back.jpg
the_rolling_stones_the_singles_back.jpg

Pues necesito que el código detecte a esta parte de la cadena the_rolling_stones_ y renombrarla a the_rolling_stones_-_ y aquí lo que siga.
tambien tiene que detectar a otras cadenas que pueden ser escritas por error o correctas, por ejemplo:

the_rolling_forty_licks_back.jpg
the_rolling_the_last_nearness_back.jpg
the_rolling_the_singles_back.jpg
En este caso tiene que resultar the_rolling_-_ y lo que siga.

O sea que detecte hasta que parte de la cadena es igual a la anterior para renombrar el _ por _-_

La parte del código de recorrer las carpetas y renombrar los archivos, se como hacerla. Sólo me hace falta el script para detectar hasta que parte es igual el nombre.

Espero haberme explicado bien y que alguien pueda ayudarme.

Gracias
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #2 (permalink)  
Antiguo 13/02/2007, 13:39
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Renombrar masivamente

Otra vez el mismo post?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 13/02/2007, 13:48
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Renombrar masivamente

Si no hay un patrón detectable (3 palabras, 4 palabras, etc), ni con ciclos, ni expresiones, ni con magia se va a poder

Aunque ........ ahora que recuerdo ...... no se si las expresiones en vbs, sean como las de java, que puedes definir un archivo para irlo comparando .... cosa de investigar
  #4 (permalink)  
Antiguo 13/02/2007, 13:50
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Renombrar masivamente

No, no es el mismo, en el otro eran 2 splits seguidos y además solo numéricos y en este puede ser 1,2,3,4,5 etc y de cualquier modo.
Salu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #5 (permalink)  
Antiguo 13/02/2007, 14:06
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Renombrar masivamente

Bueno, el patrón tiene que detectarlo el script.
No me importa que sea lento ya que sólo lo va a hacer una vez.
Estoy probando e investigando con este código y casi lo hace. Sólo le falta pulirlo.
Código PHP:
<%
cadena "the_u2_the_best_of_1960_1970_front.jpg,the_u2_dublin_1993_back.jpg,the_u2_dublon_(1993_back.jpg,u2_dublon_(1993_back.jpg"

vec split(cadena",")
Cnt 0
Veces 
0
For i=0 to Ubound(vec)
   
On Error Resume Next
vec1 
split(vec(i), "_")
vec2 split(vec(i+1), "_")
For 
a=LBound(vec1to Ubound(vec1)
For 
b=LBound(vec2to Ubound(vec2)
'Response.Write vec1(a)&" "&vec2(b)&"<br>"

        If vec1(a)=vec2(b) Then
 Cnt=a
Veces = Veces + 1
else
if Veces<>0 then
       vec1(Cnt) = vec1(Cnt) & "_-"
       vec2(Cnt) = vec2(Cnt) & "_-"
NewCad = Join(vec1,"_")
Response.Write vec1(Cnt) & "  -> "& NewCad &"<br>"
'
vec(Cnt) = "(" vec(Cnt) & ")"
Veces=0
        End 
IF
        
End IF


      
Response.Write vec1(a)&" "&vec1(b)&"<br>"

Next

Next
Next

     
%> 
Creo que se puede sacar algo.

Salu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #6 (permalink)  
Antiguo 13/02/2007, 15:26
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Renombrar masivamente

Lo que dijo Myakire es cierto, si no tienes un patron que seguir, es imposible hacer lo que pretendes, cómo va a saber tu script hasta dónde tiene que cortar un nombre de archivo?

the_rolling_stones_974.jpg
the_rolling_hola_mundo.jpg
esto_es_una_locura.jpg

Cuál sería el patrón?

A menos por supuesto que tengas una fuente con la cuál comparar, una tabla, un archivo o lo que sea, que contenga un solo nombre de autor y de ahí te puedes basar para hacer tus comparaciones, de otro modo, es imposible.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 13/02/2007, 15:31
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Renombrar masivamente

Por cierto U_G, tu que te haz tenido el tiempo de ocio necesario como para adentrarte al escabrozo mundo de las Expresiones Regulares, ¿en vbs la expresiones pueden recibir un archivo como origen de patrón de búsqueda?, anda, ahorrame el preguntarle a google
  #8 (permalink)  
Antiguo 13/02/2007, 15:46
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Renombrar masivamente

NPI, pero no lo creo, seria demasiado bello para VBS
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 13/02/2007, 15:56
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Renombrar masivamente

Bien, u_goldman, no creo que sea tan complicado como parece ser, de antemano digo que no soy experto en asp ni manejo la cantidad de funciones, objetos, y demás cosas que tiene y que voy aprendiendo poco a poco.
Pero lo que si creo es que lo que una persona haga con la mente, se puede hacer en la computadora.
Por ejemplo mirando tus tres cadenas o nombres de archivo, a simple vista el cerebro humano capta que lo único igual es the_rolling_ en la primera y segunda, por lo tanto renombra esas dos a the_rolling_-_ y la siguiente (3ª) la deja tal y como está.

La forma sería leer la primera cadena o nombre de archivo, tomar como separador de split el guión bajo.

Te voy a explicar con palabras normales, sin código.

hacer un for-next e ir mirando y comparando cada nombre de archivo.
por cada archivo ir mirando por split(x) (guion bajo).

Tomando como ejemplo tus tres nombres:
Primero comparo el split(0)the
veo que la segunda linea lo tiene,
paso al siguiente split(1) rolling
veo que la segunda linea también lo tiene
paso al split(2) stones
veo que ya no esixte igual, por lo tanto hay que renombrar en el final del split(1) el nombre 1 y 2.
Y asi sucesivamenta hasta que acabe el último directorio.
Esto debe ser lento por la cantidad de nombres, pero sólo es una vez.

Salu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #10 (permalink)  
Antiguo 13/02/2007, 16:30
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Renombrar masivamente

Aja, todo lo anterior suponiendo que todo el contenido de ese folder tenga archivos que pertenezcan a un solo artista, grupo, etc...

the_rolling_stones
the_rolling
the_doors
the_doors_otro_grupo_distinto -puede pasar, siempre pasa
the_electric_angels

No existe un patron.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #11 (permalink)  
Antiguo 13/02/2007, 16:34
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Re: Renombrar masivamente

Cita:
Pero lo que si creo es que lo que una persona haga con la mente, se puede hacer en la computadora.
¿I.A. con vbscritp?

;)
__________________
...___...
  #12 (permalink)  
Antiguo 13/02/2007, 16:44
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Renombrar masivamente

Cita:
Iniciado por eeeee Ver Mensaje
Pero lo que si creo es que lo que una persona haga con la mente, se puede hacer en la computadora.
Cita:
Iniciado por Al Zuwaga Ver Mensaje
¿I.A. con vbscritp?

;)

http://www.acm.org/ubiquity/views/v5i38_tugui.html
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #13 (permalink)  
Antiguo 13/02/2007, 17:19
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Renombrar masivamente

Bueno ....
1)Si tienes una tabla con dos campos: OldName & NewName ...
2)Supongamos que lees los nombre de todos los archivos de una carpeta
3)Los ordenas por nombre (discriminamos may/min)
4)TU como ser humano, para detectar el patrón a simple vista, necesitas ver un registro LO COMPARAS contra tu BD que es tu memoria y si esta, pues lo reconoces como nombre de artista, SINO, tienes que leer los siguientes, luego desides si el patrón tiene sentido y si es así, regresas al primero. La PC pues no es nada inteligente y no tomara esa desición a menos que programes algo que lo haga pero no creo que valga la pena cuando puedes ayudarla dándole algo contra que comparar, en este caso un archivo con los nombres de los artistas (igual no la vas a hacer a mano, no tu asustes)
5)Una vez que se ha detectado el nombre del artista, se le aplica el proceso que eeeee desea.
6)Grabar en la tabla el viejo y nuevo nombre
7)Si ya tenemos una lista con el nombre del artista, pues ya no hay necesidad de "recordar" el nombre anterior (que creo es tu idea eeeee, conservar ese nombre y compararlo contra los siguientes, pero cuando cambie volvemos al problema de la pc para decidir hasta donde termina el nombre).
8)Repetir esto hasta el fin de la lista
9)Leer la tabla y aplicar los rename a cada archivo

Creo que con eso se solucionaria el problema
  #14 (permalink)  
Antiguo 13/02/2007, 17:27
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Renombrar masivamente

Pues por eso desde un principio hablamos de un patron a seguir que no?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #15 (permalink)  
Antiguo 13/02/2007, 18:00
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Renombrar masivamente

pues si, ¿dije lo contrario?
  #16 (permalink)  
Antiguo 13/02/2007, 18:04
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Renombrar masivamente

Deja de inflar tu contador ja ja ja ja!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:24.