Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ó Código BAT o con Delphi (https://www.clubdelphi.com/foros/showthread.php?t=32522)

Deiv 08-06-2006 14:37:09

ó Código BAT o con Delphi
 
Me preguntaba como relacionar con Delphi para que funcione un archivo BAT o en su defecto LO HAGA DESDE Delphi, mi problema. Necesito crear un archivo que me realice la tarea del brcc32 que crea archivos de recursos. Inicialmente estaba intentando con un CONVERSOR.BAT, que contiene estas líneas:

PATH C:\Archivos de programa\Borland\Delphi7\Bin
brcc32 PRUEBA.rc PRUEBA.res

El código BAT sencillo de arriba me funcionaba bien para uno, pues detectaba donde se encontraba el ejecutable brcc32 para transformar un archivo de recursos de ".rc" a ".res", este BAT trabajaba muy bien en el directorio que me encontraba con un doble click.

El problema era, que CUANDO CREABA OTRO fichero .rc, y otro, y otro, etc, cada vez tengo que estar editando mi CONVERSOR.BAT para cambiar los nombres del archivo en esa segunda línea (Ej.: brcc32 OtraPrueba.rc OtraPrueba.res)

Entonces lo que requería es que mi Archivo BAT haga lo siguiente al doble click:

1.- Detecte los archivos *.rc que existan en el directorio actual que me encuentre.
2.- Que los Cuente, ¿Cuantos encontró? (O en su defecto EJECUTE el brcc32 con los encontrados)
3.- Hacer un FOR hasta la cantidad que Contó.
4.- Dentro del FOR Hacer funcionar: brcc32 para todos los archivos encontrados *.rc a *.res en el actual directorio y reemplazar si existe alguno con el mismo nombre.

Me he planteado todo esto para evitarme IR CADA VEZ al directorio de BIN y hacer funcionar el brcc32, por un lado, por otro para evitarme hacer funcionar el brcc32 tecleando desde la ventana de MSDOS PARA CADA ARCHIVO "rc", lo ideal sería hacer un dobleclick en una Aplicación y que haga este trabajo para todos los "rc" que se encuentren en el ACTUAL DIRECTORIO.

Con un BAT no lo he logrado, además que no me conozco de muchos de sus comandos. ¿Como relaciono todo este proceso con Delphi?

Saludos

Lepe 08-06-2006 15:26:15

Dentro del archivo bat puedes escribir:

Código:

Set path = %path%;C:\Archivos de programa\Borland\Delphi7\Bin

del *.res /y
FOR  %%FileRc IN  (*.rc)  DO  brcc32 %%FileRec %%FileRec.res

Creo que "del /y" era para no pedir confirmación, pero no estoy seguro.
El archivo final quedará como Prueba.rc.res si no me equivoco, porque la variable FileRec se sustituye por cada nombre de archivo. Espero que sea viable.

Aqui tienes un tutorial de archivos .bat: http://goforit.unk.edu/msdos/msdos19.htm

Hacer el equivalente en Delphi, será más largo, a menos que tengas rutinas de apoyo como FindFilesInDir('c:\', '*.res') de las NKLIBS

saludos

mamcx 08-06-2006 16:37:46

Una MUCHO mejor opcion es usar WANT

http://sourceforge.net/projects/want/

Es un programa derivado de ANT, y permite hacer bats mucho mas poderos..

Deiv 10-06-2006 16:03:28

Gracias
 
Gracias por las sugerencias. Acabo de darme cuenta que no tenía activado la opción: de respuesta instantánea por correo, recien que leo los post los probaré ambos y les comento.
Saludos

Deiv 11-06-2006 01:26:06

Hice algunas correcciones en la 2da y 3ra linea (/y por /p y FileRec x FileRc):

Set path = %path%;C:\Archivos de programa\Borland\Delphi7\Bin
del *.res /p
FOR %%FileRec IN (*.rc) DO (brcc32 %%FileRec %%FileRec.res)

- Pero a pesar de ello Me dá error con el siguiente mensaje:
..."No se esperaba %FileRec en este momento" y no hace ningún trabajo ¿Donde está el error?
- Otra consulta ¿por que en la 2da línea (del *.res /p) se le ordena borrar antes? ¿acaso esta linea no debía ser la 3ra? ¿Cual el objetivo?
- No entiendo como se maneja el Programa WANT, descargué pero algún Help? Tutorial? para Want.

Saludos

Lepe 11-06-2006 02:39:04

Pues el problema es que la variable solo puede tener una letra, es decir %%e (una sola letra despues de los %%):
Código:

@echo off
Set path = %path%;C:\Archivos de programa\Borland\Delphi7\Bin
del *.res /p
echo empezando la compilacion
for %%e in (*.rc) do brcc32 %%e
echo.
echo finalizado

Acabo de probarlo y funciona.

Decías que sobreescribiese cualquier *.res que hubiera, pues... se borran antes y así no tienes que sobreescribirlos ;)

El archivo de salida no hay por qué especificarlo.

Saludos

Deiv 11-06-2006 16:33:37

Justamente!, revisando el tutorial en http://goforit.unk.edu/msdos/msdos19.htm noté que la variable debía llevar una letra, gracias Lepe. Yo lo hice así:
Código:

Set path = %path%;C:\Archivos de programa\Borland\Delphi7\Bin
FOR  %%f IN  (*.rc)  DO  (brcc32 %%f %%f.res)

- Sigo sin entender ¿para que la línea: del *.res /p? (pero en fin no hace falta)
- ¿Alguien sabe como se utiliza el WANT?, estoy con la curiosidad.

Lepe 11-06-2006 20:50:16

Cita:

- Sigo sin entender ¿para que la línea: del *.res /p? (pero en fin no hace falta)
Borra todos los archivos cuya extensión es ".res"

del = Delete
* = Comodín (cualquier nombre de archivo)

Saludos

Deiv 12-06-2006 00:35:50

Upsss, perdón no leí bien la primera vez.
Cita:

Empezado por Lepe
Decías que sobreescribiese cualquier *.res que hubiera, pues... se borran antes y así no tienes que sobreescribirlos

mamcx, como se maneja WANT?


La franja horaria es GMT +2. Ahora son las 06:47:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi