• Publicidad

Redirigir la salida del comando system

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Redirigir la salida del comando system

Notapor mabellan » 2006-10-24 09:50 @451

Hola a todos

Estoy intentando redirigir la salida de un comando llamado desde la función system a un fichero

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
system("\"C:\\ejecucion.exe\" > \"C:\\Program Files\\salida.txt\"");
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


y el problema lo tenemos en que no reconoce el espacio entre "Program" y "Files" del fichero de salida.

¿Alguien sabe cómo hacerlo? Ya he probado estas combinaciones y ninguna es válida:

Código: Seleccionar todo
'C:/Program/Files/salida.txt'
\"C:\\Program\ Files\\salida.txt\"
"C:\\Program Files\\salida.txt"
'C:\\Program\ Files\\salida.txt'
'C:\\Program\" \"Files\\salida.txt'

fich="C:\\Program Files\\salida.txt"
system("\"C:\\ejecucion.exe\" > $fich)
system("\"C:\\ejecucion.exe\" > "$fich")



En fin, una gran variedad.
mabellan
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2006-10-24 09:38 @443

Publicidad

Notapor explorer » 2006-10-24 10:01 @459

Bienvenido a los foros de Perl En Español.

No tengo windows, pero podría ser esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
system('C:\\ejecucion.exe > "C:\\Program Files\\salida.txt"');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Otra forma sería capturar tu mismo la salida del programa y luego grabarla en el fichero de salida:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$salida = qx( C:\\ejecucion.exe );
open SALIDA,'>"C:\\Program Files\\salida.txt"' or die "ERROR: $!\n";
print SALIDA $salida;
close SALIDA;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
(no probado)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor mabellan » 2006-10-24 10:52 @494

Gracias por la respuesta, pero no ha funcionado ninguna de las dos versiones, ya que siempre me da todos los problemas cuando introduzco el espacio del directorio Program Files

La única opción que he encontrado es llamando al fichero C:\\PROGRA~1\\salida.txt, pero no vale, porque en algunas máquinas es c:\programacion y no c:\program files

Alguna sugerencia?
mabellan
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2006-10-24 09:38 @443

Notapor jclp77 » 2006-10-24 11:17 @511

Hola, acabo de hacer un prueba tal como dejo explorer el comando y me funcionó en la versión xp

system('dir *.txt > "c:\\Archivos de programa\\prueba.txt"');

sin embargo, si quito los permisos de acceso a mi usuario para escribir archivos me envia un mensaje "Acceso Denegado", tal vez podrías revisar los permisos de escritura/lectura de esa carpeta para el usuario donde se está ejecutando el programa.

Saludos :D
jclp77
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2006-09-06 12:04 @544
Ubicación: México

Notapor mabellan » 2006-10-24 11:52 @536

Gracias por todo :lol:

La solución que he encontrado gracias a vosotros es utilizando en la llamada al system, un cmd /C, de otra forma no he logrado que funcione

system('cmd \/C ""c:\\Program Files\\ejecucion.exe" > "c:\\Program Files\\salida.txt""');


Si alguien sabe una solución más "limpia", también es bien recibida.

Hasta pronto
mabellan
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2006-10-24 09:38 @443

Notapor explorer » 2006-10-24 13:11 @591

Usa Linux.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2006-10-24 18:43 @821

system('cmd \/C ""c:\\Program Files\\ejecucion.exe" > "c:\\Program Files\\salida.txt""');
Ese es el problema.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
system('cmd \/C \"\"c:\\Program Files\\ejecucion.exe\" > \"c:\\program files\\salida.txt\"\"');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Aunque como esta en ' ' no debería de pasar, pero quien quita.
Tal como dice explorer, puedes usar GNU/Linux :lol:
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 14 invitados