Autor
|
Tema: ¿Se puede hacer este script? (Leído 5,124 veces)
|
davoker
Desconectado
Mensajes: 36
Ò0ó
|
Cogemos 2 archivos, los comparamos buscando coincidencias en el nombre, y uno se renombra igual que el otro, me explico mejor. Un archivo .png y otro .zip con estos nombres: png -> andeandara.png zip -> andeandaraXD.zip El script compara el nombre del .png con todos los posibles .zips que haya en una carpeta, y busca en el nombre las coincidencias, una vez encuentra esa coincidencia (o varias), renombra dicho .png al mismo nombre que el .zip que concide en su mayor parte en el nombre (espero haberme explicado xD). Un script asi es posible? alguna idea para trabajar con ello? en plan: FC archivo1.txt archivo2.txt, que era para comparar archivos o algo asi no? no se, tengo muy dejado el batch y me esta costando retomarlo tela Venga gracias!
|
|
« Última modificación: 21 Junio 2016, 03:40 am por davoker »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
Como poder, se puede llevar a cabo la implementación de un algoritmo home-made, o siguiendo las bases de algún algoritmo aritmético específico (el cual yo desconozco) para optimizar ese tipo de comparación.
Ahora, ¿hacerlo en Batch? ...no. Es un lenguaje demasiado limitado, es inutil tan siquiera plantearselo, e intentarlo.
Para hacerlo en cualquier otro lenguaje capacitado primero tendrías que explicar las reglas de comparación/descarte más que nada para saber como narices se deberían evaluar los caracteres y las coincidencias de strings, y también para saber si ya existe un algoritmo aritmético que te pueda servir para implementarlo como un algoritmo de programación. En fin, dar todos los detalles posibles a ese nivel. De lo contrario, sinceramente ...no se que esperas que te digamos ni hagamos.
Saludos!
|
|
« Última modificación: 21 Junio 2016, 11:19 am por Eleкtro »
|
En línea
|
|
|
|
davoker
Desconectado
Mensajes: 36
Ò0ó
|
Como poder, se puede llevar a cabo la implementación de un algoritmo home-made, o siguiendo las bases de algún algoritmo aritmético específico (el cual yo desconozco) para optimizar ese tipo de comparación.
Ahora, ¿hacerlo en Batch? ...no. Es un lenguaje demasiado limitado, es inutil tan siquiera plantearselo, e intentarlo.
Para hacerlo en cualquier otro lenguaje capacitado primero tendrías que explicar las reglas de comparación/descarte más que nada para saber como narices se deberían evaluar los caracteres y las coincidencias de strings, y también para saber si ya existe un algoritmo aritmético que te pueda servir para implementarlo como un algoritmo de programación. En fin, dar todos los detalles posibles a ese nivel. De lo contrario, sinceramente ...no se que esperas que te digamos ni hagamos.
Saludos!
No hombre, no espero que nadie me haga nada, no sabia que en batch esto no se podia hacer y por eso preguntaba si era posible, en el caso de que si fuera posible hacer algo asi en batch, lo que esperaba era alguna base con la que trabajar, o ideas para tener algo con lo que empezar vaya, no busco que me hagan las cosas, no va conmigo. Si tenemos que pasar a un lenguaje como tal, se me escapa de las manos, y no sabria como dar los datos que pides mas haya de la explicacion que doy arriba. Gracias de todas formas, un saludin.
|
|
|
En línea
|
|
|
|
Echizen
Desconectado
Mensajes: 13
|
en bash (linux) se puede hacer. me imagino hacer un listado con los nombres de la carpeta "A" y despues ir comparando nombre por nombre con todos los archivos de la carpeta "B" en busqueda de coincidencias. obviamente el scripting para eso es bastante limitado, pero se puede hacer algo simple y funcional. me imagino el código algo como... #obtener listado LISTA=$(ls -l /carpetaA |awk '{print $9}') #cantidad de elementos en al lista CANT=$(wc -l $LISTA |awk 'print $1') #creamos un contador CONT=1 #bucle para recorrer el listado until [ $CONT -gt $CANT ]; do #obtener nombre de archivo a comparar ARCHIVO_ACTUAL=$(echo $LISTA |sed -n '${CONT}p') buscar archivos en la carpeta B que contengan el nombre del archivo actual ls /carpetaB |grep ${ARCHIVO_ACTUAL%.*} # ^ esto es para que no tome en cuenta la extensión del archivo # # después de aca vos veras que haces con las coincidencias... # done
asi es como yo lo encararía con bash. me imagino que en batch se debe poder hacer lo mismo, no creo que windows sea tan pobre... Saludos!
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
Si tenemos que pasar a un lenguaje como tal, se me escapa de las manos, y no sabria como dar los datos que pides mas haya de la explicacion que doy arriba. Pues por ejemplo: si el nombre de archivo original se llama "andeandara", podrías intentar explicar cual de estos nombres debería seleccionarse y por qué: - andeandaraa
- aandeandara
- andeandará
- ándeandara
me imagino que en batch se debe poder hacer lo mismo, no creo que windows sea tan pobre... No, ese script no es facilmente reproducible. El motor RegEx de Batch es lo más limitado que puedas imaginar, solo sirve para parsear, no para transformar, por ende no existe un equivalente de sed, y de awk tampoco, al menos no de una forma tan directa, puesto que primero se debe declarar un tipo de búcle para obtener el buffer de salida del comando que sirve para listar archivos en una carpeta, y luego una variable que servirá para contar cada linea ...todo esto sin soporte nativo para Arrays ni la asignacion de la salida de un comando a una variable. Eso es lo que vuelve tedioso a Batch, me refiero, lo que nos costaría un par de lineas de código en otro lenguaje, se convierte en 20 lineas si usamos Batch. Pero no es cosa de Windows, sino de Batch, pues su propósito no es ser un lenguaje de programación. Windows tiene integrado el soporte para diversos lenguajes de scripting, como VBS, por ejemplo, un lenguaje en el que si que se podría elaborar un código parecido al que has publicado sin demasiadas complicaciones. Saludos
|
|
« Última modificación: 21 Junio 2016, 20:06 pm por Eleкtro »
|
En línea
|
|
|
|
davoker
Desconectado
Mensajes: 36
Ò0ó
|
Gracias a los 2, voy a ver que puedo hacer con tu script @Echizen, se agradece.
@Eleкtro Las variantes del nombre original serian todas las que pillase el script, es decir, si el nombre original es "andeandara.zip", y tenemos 3 archivos parecidos como "andeandara1.png, andeandaraX.png y andeandaraT.png", me valdria perfectamente que renombrara esos 3 archivos PNG igual que el ZIP orignal, pero no pueden llevar los 3 PNG el mismo nombre, si me pregunatara si quiero sobreescribir ya me preocuparia yo de la decision.
Es preferible digamos que me joda 50 archivos si con ello consigo renombrar 5000 correctamente, no se si me explico jeje
Venga un saludin, voy a probar eso a ver como lo apaño.
|
|
|
En línea
|
|
|
|
177600531
Desconectado
Mensajes: 134
Forever in Darkness
|
No entiendo muy bien al final como quieres que se renombren los archivos, prueba con esto en python. # -*- coding: utf-8 -*- import glob import os os.system("clear") original = raw_input("Coincidencias # ") extensio = raw_input("Extension # ") b = original + "*" c = glob.glob(b) d = len(c) print "" print "He obtenido", d, "coincidencias!" print "" procede = raw_input("Proceder? y/n # ") if procede == "y": e = 0 for f in c: e += 1 g = str(e) os.rename(f, original+g+extensio) print "Done!" else: pass
|
|
« Última modificación: 22 Junio 2016, 02:46 am por 177600531 »
|
En línea
|
|
|
|
davoker
Desconectado
Mensajes: 36
Ò0ó
|
No entiendo muy bien al final como quieres que se renombren los archivos, prueba con esto en python. # -*- coding: utf-8 -*- import glob import os os.system("clear") original = raw_input("Coincidencias # ") extensio = raw_input("Extension # ") b = original + "*" c = glob.glob(b) d = len(c) print "" print "He obtenido", d, "coincidencias!" print "" procede = raw_input("Proceder? y/n # ") if procede == "y": e = 0 for f in c: e += 1 g = str(e) os.rename(f, original+g+extensio) print "Done!" else: pass
Hola, gracias amigo, mira al final encontre lo que buscaba pero ya hecho xD de hecho hay varias aplicaciones que lo hacen, y se mueven por el mundillo del arcade, Hyperspin y demas frontends, te pongo de ejemplo 2 que hacen lo que queria, Hyperspin_RomManager y Tru_Match, esta ultima ademas no es solo para cosas referentes a la emulacion arcade, vale para cualquier tipo de archivo. Echales un vistazo si quieres, asi ves que es lo que buscaba exactamente, estos programas o te mueves por ese mundillo o no das con ellos, estan en paginas un poco cerradas, para el que las conozca dira que no, pero no das con esas paginas de casuliadad xD Venga un saludo y gracias por la ayuda ^^
|
|
|
En línea
|
|
|
|
Poyoncio
|
Si quieres renombrar ficheros sin tener tu que decir el nombre que quieres que se les ponga puedes utilizar nombre + random.randint(0,50000) asi cada fichero seguramente tuviera un nombre distinto nose si es eso lo que buscabas. Saludos
PD: Tambien si lo que quieres es comparar nombres de fichero poniendo la extension fuera puedes hacer un if fichero.startswith('nombre_fichero').... y que hiciera un accion automatizando algo asi como una copia en la misma carpeta con diferente extension y borrando el fichero que tenia la extension distinta (esto va en funcion de lo que quieras que haga)
|
|
« Última modificación: 20 Julio 2016, 21:35 pm por Poyoncio »
|
En línea
|
Curso de ensamblador desde cero
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[MOD] se puede hacer este menu de dvd?
Multimedia
|
M-a-t-d
|
0
|
1,940
|
20 Septiembre 2007, 20:28 pm
por M-a-t-d
|
|
|
Hola majos, alguien me puede hacer un simple script, que yo no se....
Scripting
|
WildFroVII
|
1
|
2,590
|
30 Agosto 2008, 00:42 am
por Ragnarok
|
|
|
Alguien sabe donde se puede conseguir este fabuloso script?
Desarrollo Web
|
ENCUENTROSWEB
|
3
|
3,673
|
26 Diciembre 2011, 23:54 pm
por ENCUENTROSWEB
|
|
|
[BATCH] Donde falla este script. Alguien me puede ayudar?. Gracias.
Scripting
|
legolas266
|
5
|
6,162
|
14 Marzo 2013, 13:28 pm
por Eleкtro
|
|
|
Hacer un menú sencillo con este Script
Scripting
|
Meta
|
4
|
3,614
|
22 Noviembre 2017, 14:20 pm
por Meta
|
|