Ms-Dos - Informático

 
Vista:

Informático

Publicado por Xavier (4 intervenciones) el 12/07/2006 15:31:25
Hola,

tengo un fichero ejecuta.exe que funciona de la siguiente forma:

ejecuta nom_origen.ex1 nom_destino.ex2

como tengo que hacer esto mismo con una cantidad grande de ficheros estaba buscando una manera de hacerlo más simple. Pero he estado mirando un tutorial ( http://www.allenware.com/icsw/icswidx.htm#Lesson0 ) y no me aclaro.

Había hecho algo así: (run.bat)
@ echo off

echo.
dir %1.ex1 /B
pause
echo.

for %%a in (%1.ext1) do call ejecuta %%a.ex1 %%a.ex2
echo.
dir %1.ex2 /B
pause
echo.

entonces ejecuto: run * pero entonces se me queja el programa 'ejecuta' que dice que no entiende lo que le envio...

¿alguien se le ocurre algo?

Gracias de antemano!

Xavi.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Informático

Publicado por Ion (4 intervenciones) el 13/07/2006 09:33:36
Hola:

¿Podrías especificar mejor tu caso?
¿Cómo son los nombres "nom_origen.ex1" y "nom_destino.ex2" que quieres que genere el bucle for?

Para poder usar el "for", los nombres de los ficheros deben tener alguna caracteristica común entre ellos.

P.e. suponiendo que quieres ejecutarlo con todos los ficheros del directorio actual que tengan extensión "ex1" (1º arg de ejecuta.exe), y el 2º arg será el fichero con el mismo nombre pero con extensión "ex2", tendrías un for como este:

for %%f in (*.ex1) do ejecuta.exe %%~nf.ex1 %%~nf.ex2

Así, si p.e. en el directorio tienes los ficheros "uno.ex1", "c.ex1" y "otro.ex1", se ejecutaría:

ejecuta.exe uno.ex1 uno.ex2
ejecuta.exe c.ex1 c.ex2
ejecuta.exe otro.ex1 otro.ex2


De todas formas, te recomiendo que mires el comando "for" en la ayuda oficial:

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=true
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¡Exacto!

Publicado por Xavi (4 intervenciones) el 13/07/2006 09:37:38
Hola Ion!

Muchísimas gracias... era precisamente eso lo que estaba buscando!!!


Un saludo!
Xavi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Guardar fichero sin extensión en variable

Publicado por Xavi (4 intervenciones) el 13/07/2006 09:35:48
Hola,

ya he depurado un poco más el batch y me ha quedado así:

@ echo off
echo.
dir DIREC1\*.EX1 /B
pause
echo.
copy DIREC1\*.EX1 DIREC2\*.
pause
for %%i in (DIRECTORIO2/*.) do EJECUTA DIREC1\%%i.EX1 DIREC3\%%i.EX2
echo.
dir DIREC2\*.EX2 /B
pause
echo.

Con esto ya me hace lo que yo quiero, pero me gustaría saber referenciar al fichero sin la extensión...

¿alguien sabe?

Muchas gracias!

Xavi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar fichero sin extensión en variable

Publicado por Ion (4 intervenciones) el 13/07/2006 10:27:56
Mira en el enlace que te he mandado antes. Vete a la parte de abajo, y pincha en el comando "for". Te saldrá una página con una tabla muy útil, que dice entre otras cosas, cómo quedarte sólo con el nombre del fichero.

Se hace como ya te he puesto en la nota anterior...

for %%f in (*.ex1) do ejecuta.exe %%~nf.ex1 %%~nf.ex2

La "f" es el nombre de la variable (que en tu caso es "i")
Y la "~n" sirve para expandir sólo el nombre del fichero, sin ruta ni extensión.

Este for se queda con los ficheros de extensión "ex1", de ahí el "(*.ex1)".
Para cada uno de estos ficheros, expande sólo el nombre con "%%~nf" y luego le añade la extensión que queramos ("ex1" y "ex2").

Por tanto, puede modificar este for para poner las extensiones que te plazcan, tanto a la hora de coger los ficheros, como a la hora de llamar a tu .exe
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar fichero sin extensión en variable

Publicado por Ion (4 intervenciones) el 13/07/2006 10:31:27
Se me olvidaba... con el for que te digo, no sería necesario hacer ningún "copy", a menos que tu exe modifique los ficheros, y realmente quieras tener copias de estos ficheros antes de modificarlos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar fichero sin extensión en variable

Publicado por Xavi (4 intervenciones) el 13/07/2006 10:56:40
Hola otra vez,

sí, sí, ya he visto la tabla, y el link me lo he guardado para referencias futuras, pues es de gran ayuda.

Y como decía antes al final lo que yo quería hacer se resuelve en una línea, que es la que has contestado antes:

for %%f in (DIREC1/*.EX1) do EJECUTA.EXE DIREC1\%%f DIREC2\%%~nf.EX2

con esto cojo todos los ficheros .EX1 del directorio DIREC1 y lanzo mi EJECUTA.EXE sobre el resultado en otro fichero destino que tiene el mismo nombre de fichero pero con extensión .EX2 en el directorio DIREC2.


Muchas gracias otra vez, tu respuesta me ha sido muy útil.

Saludos,
Xavi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar