Bienvenido(a), Visitante. Favor de ingresar o registrarse.
Noviembre 21, 2008, 01:22:13
Inicio Ayuda Buscar Ingresar Registrarse
Noticias: Foro de Java, C++ y más.

Empieza una nueva comunidad de programación: Oneble ... es lo que tu quieras que sea

+  Foros Java y C/Linux
|-+  Programación
| |-+  Perl
| | |-+  Consola de windows con Perl
« anterior próximo »
Páginas: [1] Enviar tema Imprimir
Autor Tema: Consola de windows con Perl  (Leído 992 veces)
miguialberto
Newbie
*
Mensajes: 18


Ver Perfil


« en: Julio 25, 2008, 09:30:38 »

Hola,

Pues aqui va la primera consulta "real" sobre Perl  Sonrisa.

Tengo que hacer un pequeno script en Perl que me permita ejecutar comandos por la consola de windows. La idea del script es que al ejecutar la consola se conecte con una base de datos y alli realice una serie de operaciones. Luego tiene que salir y listo.

Me han dicho que lo haga en Perl porque era una manera interesante de empezar a iniciarme en este mundo, aunque tambien habia pensado en hacerlo en VBScript. La verdad es que ando bastante perdido en la programacion con windows, asi que cualquier ayuda se agradecera.

La verdad es que no se si existe alguna manera de poderme comunicar con un proceso sin utilizar la consola y pasarle las instrucciones directamente...

Gracias de antemano!

Ciao
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1949



Ver Perfil WWW Email
« Respuesta #1 en: Julio 25, 2008, 11:11:23 »

Hola:

perl es muy potente como "lenguaje de script", es decir, algo así como "comandos" nuevos que hacen cosas. Me explico. Abres una ventana de ms-dos y podrías escribir cosas como

c:\> miscript.pl .jpg .jpeg

que coge, por ejemplo, y cambia  todos los ficheros con extensión jpg por jpeg. Por supuesto, puedes conectarte a base de datos y hacer cosas ahí y hacer scripts complejos que sean verdaderos programas con toda su funcionalidad.

De todas formas, el lenguaje debería elegirse en función de lo que quieras hacer. Me despista un poco lo de "ejecutar la consola" y "comunicar un proceso sin utilizar la consola". ¿Qué es la consola?

Se bueno.
En línea

miguialberto
Newbie
*
Mensajes: 18


Ver Perfil
« Respuesta #2 en: Julio 25, 2008, 12:06:18 »

Hola,

Lo que quiero decir con consola es el cmd.exe de windows...creo que me he colado, es linea de comandos?. Lo que tendria que hacer a mano y que quiero hacer con el script es borrar cada noche una serie de datos de una base de datos que esta corriendo en windows. Para ello abro la linea de comandos de windows, me logueo en la BD y entro en la consola o linea de comandos de la BD.

Lo que quiero con el scrip es poder ejecutar automaticamente esta accion, y lo que intento buscar es como ejecutar comandos de la linea de comandos de windows en el scrip de Perl.

He mirado algunas librerias de Perl para Win32, como win32::Api, console..pero no estoy seguro si voy por el buen camino...me da que existe una manera mas facil.

Gracias de nuevo!
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1949



Ver Perfil WWW Email
« Respuesta #3 en: Julio 25, 2008, 03:55:09 »

Hola:

Puedes hacerlo con

Código:
system ('comando');
system ('c:/ruta/comando.exe');

Si quieres guardar el resultado, puedes hacer cosas como (ojo al sentido de la comilla simple)

Código:
my $listado = `dir`;

Se bueno.

« Última modificación: Julio 25, 2008, 04:00:27 por chuidiang » En línea

miguialberto
Newbie
*
Mensajes: 18


Ver Perfil
« Respuesta #4 en: Julio 25, 2008, 04:12:03 »

Muchas gracias!

Me esta dejando asombrado Perl por la flexibilidad y facilidad que tiene para programar!

Ciao!
En línea
miguialberto
Newbie
*
Mensajes: 18


Ver Perfil
« Respuesta #5 en: Julio 28, 2008, 09:59:01 »

Hola de nuevo,

La verdad es que pensaba que con el post anterior me valia para hacer lo que queria, pero me he vuelto a quedar atascado.

Necesito crear una comunicacion bidireccional con la shell de windows ( o la linea de comandos). Como comente en el anterior post, lo que quiero es conectarme a una BD mediante la linea de comando y hacer una serie de operaciones.

El problema que tengo es que probando la funcion "system" en efecto puedo ejecutar cmd.exe pero luego no se como poder mantener una "conversacion" con la shell. Por ejemplo me gustaria poder ejecutar cmd.exe, hacer "cd..", intentar mirar todos los archivos que son "*.doc" e intentar borrar el primero que encuentre con "deldir". Es decir, lo que quiero es ejecutar una serie de comandos continuados en la shell y ademas ver lo que me responde la shell (si hay algun archivo o no en un directorio por ejemplo).

He estado mirando como hacer esto, pero la verdad es que me sigo perdiendo. No se si debo intentar hacer un "fork()" para crear un proceso "cmd.exe" y poder comunicarme con el mediante un descriptor, y tratarlo como un fichero. O si exite alguna manera de encadenar la funcion "system" o "exec" sin perder el estado de la shell...en fin, que cualquier ayuda sera de nuevo agradecida!

Muchas gracias de nuevo!

ciao!
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1949



Ver Perfil WWW Email
« Respuesta #6 en: Julio 28, 2008, 12:41:59 »

Hola:

Perl tiene funciones que permiten manejar ficheros: crear directorios, borrarlos, borrar ficheros, etc. ¿Por qué no usas esas funciones en vez de hacer una shell?

http://perldoc.perl.org/index-functions.html

Se bueno.
En línea

Willie
Newbie
*
Mensajes: 18


Ver Perfil
« Respuesta #7 en: Septiembre 04, 2008, 03:14:05 »

Creo que quieres usar los `pipes'.
Esto podria ayudar:

http://www.unix.com.ua/orelly/perl/prog3/ch16_03.htm
http://nereida.deioc.ull.es/~pp2/perlexamples/node13.html
http://es.geocities.com/chikhaniyac/hw/contenido.htm
En línea
Páginas: [1] Enviar tema Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by MySQL Powered by PHP Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC XHTML 1.0 válido! CSS válido!