2008-11-14 62 views

Respuesta

12

Así es como se hace:

Shell "cmd echo foo", vbNormalFocus 
9

Siempre he usado el método Run del objeto WshShell, que está disponible después de que se hace referencia el anfitrión del modelo de objetos de Windows Script en su proyecto:

Dim shell As wshShell 
Dim lngReturnCode As Long 
Dim strShellCommand As String 

Set shell = New wshShell 

strShellCommand = "C:\Program Files\My Company\MyProg.exe " & _ 
    "-Ffoption -Ggoption" 

lngReturnCode = shell.Run(strShellCommand, vbNormalFocus, vbTrue) 

Obtiene la misma funcionalidad que e la declaración de Shell normal, pero el parámetro final le permite decidir si ejecutar el programa sin shell de forma sincrónica. La llamada anterior, con vbTrue, es sincrónica. El uso de vbFalse inicia el programa de forma asincrónica.

Y, como se señaló en las respuestas anteriores, debe ejecutar el shell de comandos con el interruptor "/ c" para ejecutar comandos internos, como el "echo foo" de su pregunta. Enviarías "cmd/c echo foo" al método Run.

+0

lngReturnCode = shell.Run (strShellCommand, vbNormalFocus, vbTrue) – nh32rg

+0

Gracias, @ nh32rg. Fijo.Ese es un error que vivió por más de 4 años. – JeffK

+0

Este código es para vbScript no VB6 como se lo solicitó en la pregunta. Eso puede ser muy confuso para alguien que solo conoce VB6 y busca respuestas a las preguntas de VB6. – Jeff

4

una combinación de todos

Shell Environ("COMSPEC") & " /c echo foo", vbNormalFocus 

usted debe pensar en la expansión de variable de entorno COMSPEC si desea apoyar los sistemas anteriores como Windows 9x o Me.

También puede obtener el identificador de proceso utilizando

pid = Shell(Environ("COMSPEC") & " /c echo foo", vbNormalFocus) 
4
Shell "cmd /c echo foo" 
-1

Sólo utilice comillas dobles: ""...""

Ejemplo - enviar pase de confirmación para realizar una tarea:

shell (""echo pass|schtasks /create /TR "C:\folder\...\program.exe" /more_parameters"") 

porque los primeros " están cerrados en "C:\... yt la cuerda se detendría.


Ahora explico en Español
Solo usa comillas dobles: ""...""

EJEMPLO - Mando pase ONU to confirm la creacion de La tarea:

shell (""echo pass|schtasks /create /TR "C:\folder\...\program.exe" /more_parameters"") 

La Causa Es Que La Primera comillas " se cierra con las comillas de la ruta "C:\... y se pierde la cadena Cadena.

:) Espero SIRVA y buena suerte

Cuestiones relacionadas