Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: z3nth10n en 10 Junio 2013, 20:27 pm



Título: Transformar nombre de los archivos a 001,002,003.png,etc?
Publicado por: z3nth10n en 10 Junio 2013, 20:27 pm
Hola buenas, pues estoy buscando un Batch que haga esto... Y que meta los archivos en una carpeta llamada "Resultados" como lo podria hacer? :huh:

Los achivos a transformar están todos en la misma carpeta, simplemente se tienen que copiar con ese nuevo nombre... :)

Un saludo.


Título: Re: Transformar nombre de los archivos a 001,002,003.png,etc?
Publicado por: crazykenny en 10 Junio 2013, 20:41 pm
Hola, Ikillnukes; en cuanto a saber donde puedes encontrar un Batch que haga lo que pides, y, si te refieres a saber donde descargartelo, me disculpo por no poder ayudarte en este tema.
No obstante, si quieres saber como hacerlo, tengo una idea;
Lo primero, hacer un bucle que vaya comprobando los archivos que hay hasta que no queden archivos (en lo cual no sabria decirte como hacer dicho bucle puesto que he mirado algun ejemplo "por encima", pero no en batch).
Despues, y, dentro del bucle, ha de haber una variable (y preferiblemente tipo "float" y/o de otro tipo que permita mantener y/o asignarle a estas valores grandes; ya sabes, de valores de mas de 255), en la cual, cada vez que se vaya a repetir el bucle, aumente en 1.
Despues, comprobar el valor de la variable y asignarla a un string cualquiera de esta manera y con estas tres dos condiciones;
-Si el valor de la variable es inferior a diez, asignarle dos ceros al string y, despues, añadirle la variable al string ya sabes, haciendo algo tipo variable_final$="00"+variable_float#.
-Si el valor de la variable es menor a 100 y superior a 9, asignarle un 0 a la string y despues la variable haciendo algo tipo variable_final$="0"+variable_float#.
-Si el valor es superior a 99, asignar la variable a la string directamente haciendo algo tipo variable_final$="0"+variable_float#.
Por ultimo, y, dependiendo de los comandos disponibles en batch, puedes hacer que copie el archivo (llamemosle "inicial") a la ruta nueva con el nombre de la variabe mencionada arriba y despues eliminar el archivo inicial, o bien renombrar el primer archivo (o archivo inicial) para despues copiarlo, y, despues de copiarlo, lo eliminas, aunque, bueno, si hay algun comando que permita hacer algo tipo cortar y pegar, se podria utilizar para saltarse el paso de utilizar un comando para eliminar el archivo.
Espero haberte podido ser de ayuda, y, bueno, muchas gracias por vuestra atencion.
Saludos.


Título: Re: Transformar nombre de los archivos a 001,002,003.png,etc?
Publicado por: Eleкtro en 10 Junio 2013, 21:27 pm
Lo primero de nada es que lo que quieres hacer se denomina Renombrabiento (Renombrar archivos), Y se puede hacer con el comando "Ren" (o "Rename", es lo mismo):
Código
  1. Ren "Imágen.png" "001.png"

Lo que requieres se puede hacer, pero esto es Batch, requiere usar un poco de lógica, no es dificil pero llevaría bastante tiempo, ya que por cada X cantidad de archivos deberás usar X cantidad de ceros, por ejemplo:

menos de 10 archivos > 0.png
más de 10 archivos pero menos de 100 > 00.png
más de 100 archivos pero menos de 1000 > 000.png

Así que hay que escribir muchas condicionales en el código, y requiere su tiempo,
sincéramente, lo haría si fuese necesario, para algo soy moderador y sé Batch, pero en este caso no es necesario, lo considero perder el tiempo, ya que te recuerdo que estás en .NET, y con un "interop increment" y un par de select cases se hace bien rápido comparado con todo lo que hay que escribir en Batch.

EDITO: De hecho yo ya hice un Bat con ese tipo de renombrado, donde se detectaba la cantidad de ceros que habia que añadir a la izquierda de cada archivo a rneombrar según la cantidad total de archivos, pero no sé donde publiqué el código ni con que nombre, fue hace más de un año como mínimo xD.

PD: No te dejo "tirado",  voy a hacer un snippet para VBNET para hacer este tipo de renombrado.

Saludos!


Título: Re: Transformar nombre de los archivos a 001,002,003.png,etc?
Publicado por: z3nth10n en 10 Junio 2013, 21:43 pm
Lo de los 0 no es necesario, solo era un ejemplo. ;)

Esto no tiene que ver nada con mi proyecto. :P Es solo una cosilla para hacer pruebas con los
picboxes. :)


Título: Re: Transformar nombre de los archivos a 001,002,003.png,etc?
Publicado por: Eleкtro en 10 Junio 2013, 22:58 pm
Bueno, de todas formas ya he codeado la función para hacerlo añadiendo los Ceros xD.
http://foro.elhacker.net/net/pequena_duda_con_un_string-t392198.0.html;msg1860018#msg1860018

Si lo quieres hacer en Batch (sin incrementar por "ceros") entonces el código no requiere esfuerzo:

Código:
@Echo off
setlocal enabledelayedexpansion

For %%# in ("X:\carpeta\*.png") Do (
    set /A num+=1
    Ren "%%#" "!num!.%%~x#"
)

Saludos


Título: Re: Transformar nombre de los archivos a 001,002,003.png,etc?
Publicado por: simorg en 11 Junio 2013, 04:25 am
Uff, con lo facil que es usar The rename......


http://uploadingit.com/file/3d7hhqkdbxhek0me/THE%20Rename%202.1.6.rar



Salu2. ;D


Título: Re: Transformar nombre de los archivos a 001,002,003.png,etc?
Publicado por: z3nth10n en 11 Junio 2013, 07:32 am
Bueno, de todas formas ya he codeado la función para hacerlo añadiendo los Ceros xD.
http://foro.elhacker.net/net/pequena_duda_con_un_string-t392198.0.html;msg1860018#msg1860018

Si lo quieres hacer en Batch (sin incrementar por "ceros") entonces el código no requiere esfuerzo:

Código:
@Echo off
setlocal enabledelayedexpansion

For %%# in ("X:\carpeta\*.png") Do (
    num+=1
    Ren "%%#" "!num!.%%~x#"
)

Saludos

Error:

Código
  1. programa o archivo por lotes ejecutable.
  2. Ya existe un archivo con el mismo nombre
  3. o no se ha encontrado el archivo.


Título: Re: Transformar nombre de los archivos a 001,002,003.png,etc?
Publicado por: Eleкtro en 11 Junio 2013, 09:57 am
perdón, lo escribí al vuelo y cometí un misstype, símplemente añade un SET /A aquí:
Código:
set /A num+=1

PD: La costumbre de no usar keywords a la izquierda de las variables en otros lenguajes cada vez se apodera más de mi xD.

Error:

Código
  1. Ya existe un archivo con el mismo nombre
  2. o no se ha encontrado el archivo.

Ese error que comentas es "normal", si ya tienes un archivo que se llama "1.png" no se puede renombrar al mismo nombre y el bat fallará con ese archivo, pero nada grave.

Saludos


Título: Re: Transformar nombre de los archivos a 001,002,003.png,etc?
Publicado por: z3nth10n en 11 Junio 2013, 14:53 pm
Un último apunte xD Los archivos se han renombrado con el hombre 1..png, 2..png, etc  :silbar:

Ya lo he arreglado, con poner

Código:
Ren "%%#" "!num!%%~x#"

En vez de:

Código:
Ren "%%#" "!num!.%%~x#"

Ya va bien. ;)