Ejecutar ConsoleApp desde VB y escribir resultados en archivo.log

Iniciado por extreme69, 11 Diciembre 2010, 05:47 AM

0 Miembros y 1 Visitante están viendo este tema.

extreme69

Bueno, yo por acá de nuevo con más problemas de esos que a ustedes les gustan  :laugh:

Tengo una console app de c++ ya compilada obviamente, como mis conocimientos de c++ son cero, prefiero hacer lo que tengo q hacer en vb6 que se me hace más fácil y ejecutar la aplicacion con una shell.

El problema viene acá... estoy usando este código:

Shell ("xfirepwd.exe" & " " & path666 & "\" & "xfire.ini" & " " & ">" & " " & "c:\kb00.log")

Esto lo hago con la intención de que se escriban los resultados en "c:\kb00.log", pero sin embargo no lo hace, me corre la aplicación, encuentra el path, hace todo lo que tiene que hacer... pero no me escribe el archivo.


extreme69

Mmm... ya descubrí mi error, la shell me lee los directorios con 8 digitos, así que tengo que cambiar "archivos de programa" por "archiv~1" para que me lo tome...

De todas formas no me sirve... porque previamente tengo una variable con el path que saqué del registro.

Ahora voy a hacer algo así:

if path666 = "c:\Archivos de Programa\xfire" then
path_result = "c:\archiv~1\xfire"
end if

if path666 = "c:\Program Files\xfire" then
path_es_c = "c:\progra~1\xfire"
end if

y así repetidas veces para varios discos (d, e, f, g), no será la mejor manera de hacerlo, pero es la unica q sé xD

Agradezco de antemano si me ayudan con una manera más eficaz  de hacerlo  ;-)

BlackZeroX

#2
.
Prueba asi...

Código (Vb) [Seleccionar]


Shell ("xfirepwd.exe " & chr(34) & path666 & "\xfire.ini" & chr(34) & " > c:\kb00.log")



Temibles Lunas!¡-
The Dark Shadow is my passion.

extreme69

#3
Gracias BlackZeroX, ya lo hice de otra forma.

Hice que se cree un archivo .bat armado con las variables del path según O.S.

De todas formas voy a probar con tu ejemplo también porque quedé con bronca.

El problema nacía en el xfirepwd.exe, si bien la sintaxis es la correcta, la sintaxis puede tener una variante.

Por ejemplo, esta sintaxis es valida si lo pongo en cmd:

xfirepwd c:\program files\xfire.ini

Esta sintaxis tambien es valida si la pongo en cmd:

xfirepwd c:\program files\xfire.ini > x.txt

Pero el problema es que esta sintaxis también es válida desde cmd:

xfirepwd c:\program files\xfire.ini 32672689

Siendo 32672689 parte de la sintaxis (una key)

No me queda claro el motivo... pero al hacer la llamada desde el VB6 me toma la sintaxis como si fuese la ultima... entonces piensa que la key es ">" y me la toma como un character.

Ahora lo solucioné cambiando el código del xfirepwd.c (me volví loco para compilarlo) y sacando unas funciones wait_exit que habían por todos lados.


Saludos y gracias como siempre evacuando mis dudas ^^



extreme69

#4
Ahora tengo más problemas...

Código para crear .bat y ejecutarlo:


Dim contenido_bat As String

contenido_bat = ("ping -n 2 127.0.0.1 > null" & vbCrLf & "ptf.exe" & vbCrLf & "pause")

Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("e:\ASD6\bin\new.bat", True)
a.writeline contenido_bat

Shell ("e:\ASD6\bin\new.bat")


Oh crap!, no me deja ejecutar .bat's :P

¿alguna manera de luego de crear el .bat compilarlo a .exe y luego ejecutarlo?


Solucionado

Disculpen que sea tan molesto preguntando, pero me molesta y mucho cuando no sé porqué suceden las cosas  ;-)

Compilé el .bat así me lo toma aunque esté en otro directorio.