Foros del Web » Programando para Internet » ASP Clásico »

Ejecutar exe y pasarle archivo txt

Estas en el tema de Ejecutar exe y pasarle archivo txt en el foro de ASP Clásico en Foros del Web. Tengo un archivo exe al que soltandole encima un archivo txt me devuelve un archivo en otro formato. (esto lo hago manualmente) Estoy intentando abrir ...
  #1 (permalink)  
Antiguo 03/09/2006, 12:15
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
Ejecutar exe y pasarle archivo txt

Tengo un archivo exe al que soltandole encima un archivo txt me devuelve un archivo en otro formato. (esto lo hago manualmente)

Estoy intentando abrir el archivo exe y pasarle un fichero de texto desde asp, trabajando desde el propio pc el localhost este es el codigo:

<%
Dim wshell, intReturn
set wshell = server.createobject("wscript.shell")
intReturn = wshell.run("c:\carpeta\miejecutable.exe > c:\carpeta\miarchivo.txt", 0, True)
Response.Write( intReturn )
set wshell = nothing
%>

intReturn me devuelve 0, y no se me crea el archivo resultante,
¿alguien sabe que hago mal?
  #2 (permalink)  
Antiguo 03/09/2006, 18:12
 
Fecha de Ingreso: noviembre-2005
Mensajes: 658
Antigüedad: 18 años, 5 meses
Puntos: 3
El Disco C que se hace mención siempre será el del Server; nunca el del PC en donde estás cargando la página; por lo que para que funcione eso, debes de tener la carpeta llamada "carpeta" en el disco C del server, con el ejecutable en dicha carpeta y ser este directorio uno más del Sitio en donde quieres crear el archivo.... por otro lado debes de dar control total a esa carpeta para que se genere ese archivo al usuario anonimo

Mira acá tengo un ejemplo en donde doy Control Total a una carpeta XXXXX usando el wshell; ejecutando el comando CALC ; para dar los permisos correctos NTFS.... fijate que uso el Server.MapPath ... etc

' Da Control Total a Directorio Asignado

On Error Resume Next

nm_directorio = server.MapPath("/") & "\" & frm_categ
arch = server.MapPath("/") & "\temp.txt"
map = """" & nm_directorio & """"
comando = "cmd /c echo y| CACLS"
comando = comando & " " & map
comando = comando & " /t /e /p " & frm_login & ":f"
comando = comando & " > " & arch

set objwsh = Server.CreateObject("WScript.Shell")
objcom = objwsh.Run (comando, 0 , True)
set objwsh = Nothing
if (err.number <> 0) then
msg = "ERROR AL DAR CONTROL TOTAL" & hex(err.number) & " - " & err.description & " ***"
response.redirect.....
end if


Espero te ayude
  #3 (permalink)  
Antiguo 03/09/2006, 18:45
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
Gracias por tu ayuda monkyta

Obtego este mensaje de error:

msg = ERROR AL DAR CONTROL TOTAL 46 - Permiso denegado ***
Conn el codigo que has puesto se intenta dar permisos a la carpeta:

c:\inetpub\wwwroot\

Aunque no haya funcionado correctamente el script, me ha sido muy clarificadora tu respuesta, gracias.
  #4 (permalink)  
Antiguo 03/09/2006, 18:48
 
Fecha de Ingreso: noviembre-2005
Mensajes: 658
Antigüedad: 18 años, 5 meses
Puntos: 3
Me faltó decirte lo siguiente.... para usar el comando CALC debes de hacerlo autentificado con un usuario con perfil de Administrador..... en realidad yo uso esa página que te envié parte del código usando Autentificacion Basica; con un login con perfil de administrador.... de otra manera es imposible

saludos
  #5 (permalink)  
Antiguo 05/09/2006, 12:20
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
Hola monkyta,
Perdona por no contestarte antes, ayer me fue imposible. No se a que puede deberse el usuario con el que etoy en el pc es el administrador del equipo pero obtengo el error de Permiso denegado.
Seguire investigando Gracias de nuevo por tu ayuda.
  #6 (permalink)  
Antiguo 10/09/2006, 10:35
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
He conseguido por fin ejecutar el archivo exe en el localhost y pasarle el archivo txt.

<%
programa="programa1"
archivo="probando.txt"
rutaprograma=server.MapPath(".") & "\" & programa
rutayarchivo=server.MapPath(".") & "\" & archivo
sExecStr = rutaprograma & " " & rutayarchivo
Response.Write sExecStr &"<br>"
Set oShell = Server.CreateObject("WScript.Shell")
Set oExec = oShell.Exec(sExecStr)

Do While oExec.Status = 0
Response.Write "Esperando oExec.Status " & oExec.Status &"<br>"
Loop
Response.Write "<b>oExec.Status " & oExec.Status &"</b><br>"

Do While Not oExec.Stdout.atEndOfStream
tmpStr = oExec.StdOut.Read(1)
if tmpStr = Chr(13) then tmpStr = "<BR>" & tmpStr
Response.Write tmpStr
Response.Flush()
Loop

RetCode = oExec.stderr.readall
Response.Write RetCode
Response.Write "<br>oExec.Status " & oExec.Status
%>


Esto es lo que me arroja:

INPUT:
1) "c:\inetpub\wwwroot\webexe\probando.txt" (ASC file)
OUTPUT:
1) "c:\inetpub\wwwroot\webexe\probando.inc"
2) "c:\inetpub\wwwroot\webexe\probando.bmp"
Error, could not open output file

En realidad deberia aparecer: (es lo que ocure cuando uso la linea de comandos)
Creating file "c:\inetpub\wwwroot\webexe\probando.bmp"
1 archivos copiados.


A ver si alguien me aclara un poco que ocurre y si ahi solucion pra esto, estoy empezando a pensar que quizas no es posible lo que intento hacer.
Mezcla de emociones!
Contento por conseguir ejecutar el programa y triste por que no funcione.
  #7 (permalink)  
Antiguo 10/09/2006, 14:44
 
Fecha de Ingreso: noviembre-2005
Mensajes: 658
Antigüedad: 18 años, 5 meses
Puntos: 3
Haces algo mal.....

Para probar desde la consola MSDOS en forma exacta lo que quieres hacer desde tu página haz el response.write de todo el comando completo y response.end.... con lo que salga intentalo por DOS a ver si hace algo.... ese error que da es porque está tratando de generarse un archivo vacío.... revisa bien.... te falta poco.... animo que se puede.... todo se puede
  #8 (permalink)  
Antiguo 11/09/2006, 12:24
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
Quizas os resulte interesante!

He pensado que lo mejor es explicaros a todos lo que estoy intentando hacer,
me parece super interesante y creo que puede ser muy util y con infinidad de posibles utilidades.

Quizas le interese a alguien más y podamos entre todos los interesados lograrlo.

El objetivo es a traves de archivos de texto (.txt) obtener archivos en formato .ov2 y .bmp.

Os explico los archivos en formato .ov2 son POI de TomTom Navigator POI (Points of Interest).

Hay un archivo .exe que es el que se encarga de convertir los archivos .txt en archivos .ov2 y .bmp
Este archivo es: makeov2.exe

Se puede descargar desde:http://www.tomtom.com/support/ce/sup...v_poi.php#poi4
donde pone Download ov2tools.zip version 1.22 (58 kb)

La descarga directa seria: http://www.tomtom.com/support/ce/sup...2/ov2tools.zip

Lo descomprimis y encotrareis el archivo makeov2


Los archivos archivos .ov2 y .bmp se pueden introducir en el gps y consigues que te avise con un sonido y mostrando la imagen del archivo .bmp
cuando te encuentras a un radio que tu determinas de los puntos de interes que hallas introducidos.

El archivo micasa.txt contiene la longitud, la latitud y el nombre del punto de interes, el contenido por ejemplo puede ser:

-3.67845 , 38.40622 , "Piso"


Todos los archivos han de estar en la misma carpeta:

Supongamos: c:\inetpub\wwwroot\webpuntosdeinteres\webroot\

para conseguir los archivos hay distintas formas:

1. - Arrastrando el archivo .txt sobre el archivo exe makeov2

2.- Escribiendo en la consola de msdos:
c:\inetpub\wwwroot\webpuntosdeinteres\webroot\make ov2 c:\inetpub\wwwroot\webpuntosdeinteres\webroot\mica sa.txt

3.- Desde ASP?

Este es el codigo que uso:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Response.Expires = 0
Response.Buffer = True
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title></title>
</head>
<body>
<%
archivo="micasa.txt"
rutaprograma=server.MapPath(".") & "\makeov2"
rutayarchivo=server.MapPath(".") & "\" & archivo
sExecStr = rutaprograma & " " & rutayarchivo
Response.Write sExecStr &"<br>"
Set oShell = Server.CreateObject("WScript.Shell")
Set oExec = oShell.Exec(sExecStr)
Do While oExec.Status = 0
Response.Write "Esperando oExec.Status " & oExec.Status &" Hora:" & now &"<br>"
Response.Flush()
Loop
Do While Not oExec.Stdout.atEndOfStream
tmpStr = oExec.StdOut.ReadAll()
Response.Write tmpStr
Response.Flush()
Loop

RetCode = oExec.stderr.readall
Set oShell=Nothing
Response.Write RetCode
Response.Write "<br>oExec.Status " & oExec.Status
%>
</body>
</html>

Y el resultado es:

c:\inetpub\wwwroot\webpuntosdeinteres\webroot\make ov2 version 1.1

INPUT:
1) "c:\inetpub\wwwroot\webpuntosdeinteres\webroot\mic asa.txt" (ASC file)

OUTPUT:
1) "c:\inetpub\wwwroot\webpuntosdeinteres\webroot\mic asa.ov2"
2) "c:\inetpub\wwwroot\webpuntosdeinteres\webroot\mic asa.bmp"

Error, could not open output file intermediate\poi.9999



Por lo que se consuigue ejecutar el archivo makeov2.exe, pasarle el archivo .txt, que lo ejecute, pero no se obtienen los archivos .ov2 y .bmp resultantes.


Nota:
Para evitar el error de Permiso denegado debes de hacerlo autentificado con un usuario con perfil de Administrador.

Le he dado todos los permisos posibles en la carpeta webpuntosdeinteres y todo su contenido
a la cuenta de invitado de internet nombrePc\IUSR_nombrePc

Bueno hasta aqui he llegado,

Ojala alguien tenga alguna idea de que mas hacer
  #9 (permalink)  
Antiguo 15/09/2006, 17:42
 
Fecha de Ingreso: noviembre-2005
Mensajes: 658
Antigüedad: 18 años, 5 meses
Puntos: 3
El permiso a la carpeta en donde generarás los archivos debes de darlo al usuario con el cual estás trabajando; ese con perfil de administrador; no al usuario anonimo... ese es el problema..... dale permiso NTFS de Control Total al usuario autentificado que usas para llamar a esa página... eso es todo... ya hiciste lo más dificil; falta solo la parte de los permisos..... ese error que da es porque no puede grabar el archivo de salida por falta de permiso....
  #10 (permalink)  
Antiguo 16/09/2006, 05:00
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
monkyta Gracias por responder, no creo que sea por falta de permisos, le he dado permisos a en la pestaña de seguridad a todos los usuarios todos los permisos posibles, pero sigue el mismo error:

Error, could not open output file intermediate\poi.9999

¿Lo has probado tu y te ha funcionado?
Me llevaria una inmensa alegria si asi fuera, ya que veria que hay algo que no hago bien pero que es posible. Ya creia que nadie responderia a este post. Gracias de Nuevo
  #11 (permalink)  
Antiguo 28/09/2006, 06:32
 
Fecha de Ingreso: septiembre-2006
Mensajes: 5
Antigüedad: 17 años, 6 meses
Puntos: 0
Ejecutar un bat

Hola, estoy intentando llamar a un bat desde asp pero con el codigo que os pongo y con el de este tema me pasa siempre lo mismo, la pagina que se queda pensando hasta que me deja tieso el IIS.
Os paso el codigo por si os sirve.
<%
dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.run "d:\ejecuta_dts.bat",3,false
set objShell = nothing
%>
He probado con true tambien he probado con muchos codigos del estilo pero ninguno funciona en todos ocurre lo mismo se queda pensando.
Gracias
  #12 (permalink)  
Antiguo 29/09/2006, 18:22
 
Fecha de Ingreso: noviembre-2005
Mensajes: 658
Antigüedad: 18 años, 5 meses
Puntos: 3
Se queda colgado porque te faltan permisos...

Primero debes de llevar ese bat que quieres ejecutar a una carpeta del Sitio; para que puedas darles los permisos necesarios por IIS

Por el explorador de Windows llegas a esa carpeta y vas a la carpeta seguridad y agregas al usuario anonimo ; que es IUSR_nombremaquina; luego lo marcas y en la parte de abajo le das los permisos

Luego vas a la consola MMC del IIS y vas al directorio en donde estará el bat que vas a ejecutar y das click derecho propiedades.... acá vas adonde dice Permisos de Ejecucion... alli debes de dar permisos para leer y ejecutar script... el defecto no es ejecutar...

Eso es todo
  #13 (permalink)  
Antiguo 03/10/2006, 01:22
 
Fecha de Ingreso: septiembre-2006
Mensajes: 3
Antigüedad: 17 años, 7 meses
Puntos: 0
sqa212, estoy en la misma situación que tu, y no hay manera de avanzar...el dixoso error: "Error, could not open output file intermediate\poi.9999"

Y no hay manera...Habeis conseguido algo vosotros?
  #14 (permalink)  
Antiguo 03/10/2006, 17:20
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
actualmente sigo en la misma situacion
  #15 (permalink)  
Antiguo 04/10/2006, 02:24
 
Fecha de Ingreso: septiembre-2006
Mensajes: 3
Antigüedad: 17 años, 7 meses
Puntos: 0
He probado con dynuexec con el siguiente codigo:

<%
Set myexec = Server.Createobject("Dynu.Exec")
Response.Write("<PRE>")
aejecutar=Server.MapPath("makeov2.exe intermedio.asc")
response.write(myexec.execute(aejecutar))
Response.Write("</PRE>")
Set myexec = nothing
%>

y me devuelve esto:

E:\pois\makeov2.exe version 1.1
INPUT:
1) "intermedio.asc" (ASC file)
OUTPUT:
1) "intermedio.ov2"
2) "intermedio.bmp"
Error, could not open input file intermedio.asc

creo que voy para atras en vez de para adelante...
habeis probado con el aspexec?
Un saludo
  #16 (permalink)  
Antiguo 05/10/2006, 07:48
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
¿por qué tanto rollo?

Esto esta fàcil

Solo pon estas dos lineas de código y veras como funciona lo que necesitas (ya lo probé)

Cita:
set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "makeov2.exe", "micasa.txt", "C:\Inetpub\wwwroot\MisPruebas\Ejecutar", "open", 1
Se que es innecesario decirte que hay que cambiar el tercer parámetro que indica el directorio de trabajo, pero igual lo hago

Saludos
  #17 (permalink)  
Antiguo 05/10/2006, 17:46
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
Myakire me repondistes a mi pregunta, no te entendi
  #18 (permalink)  
Antiguo 05/10/2006, 19:25
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Cita:
Solo pon estas dos lineas de código y veras como funciona lo que necesitas (ya lo probé)
mmmm, ¿qué parte de esto no fue clara?

Con esas dos lineas de código ejecutas el makeov2.exe, enviándole tu archivo micasa.txt como parámetro que se encuentran en el directorio (en mi caso) C:\Inetpub\wwwroot\MisPruebas\Ejecutar.

Te genera un bmp con una figurilla parecida a un asterisco y un archivo .ov2

Pruébalas, solo ponlas en un archivo .asp, correlo en el directorio donde ya no te marca error de permisos tu código anterior (que no ejecuta el .exe como deseas) y listo, problema resuelto

Saludos
  #19 (permalink)  
Antiguo 06/10/2006, 03:43
 
Fecha de Ingreso: septiembre-2006
Mensajes: 3
Antigüedad: 17 años, 7 meses
Puntos: 0
mmm Perfecto ahora tengo otro problemilla, el fichero que lee el makeov2 lo genero mediante codigo:

corx=request.form("corx")
cory=request.form("cory")
nombre=request.form("nombre")
archivo= request.serverVariables("APPL_PHYSICAL_PATH") & "intermedio.asc"
set confile = createObject("scripting.filesystemobject")
set fich = confile.CreateTextFile(archivo)
aescribir=corx & ", " & cory & ", " & nombre & "" & chr(13)
fich.write(aescribir)
fich.close()

el problema es que parece que me deja el archivo abierto porque el makeov2 no trabaja con el, me devulve el .bmp pero no el .ov2, sin embargo si abro el archivo intermedio.asc (que es el que lee el makeov2) le doy a guardar cambios (aunque no haya hecho ningun cambio) lo cierro y ejecuto el script, funciona a la perfeccion.
con la sentencia fich.close() deberia de cerrar el archivo, ¿verdad?
no se lo que esta pasando...ayuda please!!!
Un saludo
  #20 (permalink)  
Antiguo 06/10/2006, 08:26
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
Gracias Myakire

como dijo einstein "Make everything as simple as possible, but not simpler".

Te expreso mis mas enormes agradecimientos y admiración.

Esta seria otra forma pero usando el server.MapPath tambien funciona

<%
set objShell = CreateObject("Shell.Application")
ruta=server.MapPath(".")
objShell.ShellExecute "makeov2.exe", "micasa.txt", ruta, "open", 1
%>

Última edición por sqa212; 06/10/2006 a las 08:33
  #21 (permalink)  
Antiguo 06/10/2006, 09:18
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Que bueno que te sirvió, por lo del MapPath, en efecto, funciona; aunque otra alternativa puede ser Request.ServerVariables("PATH_TRANSLATED")

Por lo de generar el archivo con FSO, no le veo problema, en una chance que tengo lo probarè también pero no debe haber problema

Saludos
  #22 (permalink)  
Antiguo 31/07/2009, 03:35
 
Fecha de Ingreso: julio-2009
Mensajes: 1
Antigüedad: 14 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Ejecutar exe y pasarle archivo txt

Despues de mucho buscar por Foros e Internet no encontré nada hasta que me puse a probar por mi cuenta y con lo siguiente me funcionó!!!

Para tener permiso de ejecución lo que se debe hacer es en Internet Explorer en Herramientas-> Opciones de Internet -> Seguridad-> Sitios de confianza. Una vez añadido el sitio en Nivel personalizado hablitar la opcion "Inicializar y generar escripts de los controles ActiveX no marcados como seguros para scripts"
  #23 (permalink)  
Antiguo 31/07/2009, 05:41
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Ejecutar exe y pasarle archivo txt

Hola, bienvenido al foro

Cita:
Iniciado por vrm184 Ver Mensaje
Despues de mucho buscar por Foros e Internet no encontré nada hasta que me puse a probar por mi cuenta y con lo siguiente me funcionó!!!

Para tener permiso de ejecución lo que se debe hacer es en Internet Explorer en Herramientas-> Opciones de Internet -> Seguridad-> Sitios de confianza. Una vez añadido el sitio en Nivel personalizado hablitar la opcion "Inicializar y generar escripts de los controles ActiveX no marcados como seguros para scripts"
De eso hace ya 3 años
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #24 (permalink)  
Antiguo 01/04/2016, 10:09
 
Fecha de Ingreso: abril-2016
Mensajes: 1
Antigüedad: 8 años
Puntos: 0
Respuesta: Ejecutar exe y pasarle archivo txt

buen día encontré este blog al buscar ayuda para mi error:

Tengo un ws que manda a llamar a un .bat y ese a su vez ejecuta un .exe

Pruebo el .bat y funciona genial, al igual si pruebo el ws en visual studio, pero cuando lo pongo en el iis no ejecuta el exe y el administrador de tareas se queda abierto el proceso de ese exe.

Que puedo hacer?


Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:35.