Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ejecutar instrucción DOS desde VB6 en ejecución

Estas en el tema de Ejecutar instrucción DOS desde VB6 en ejecución en el foro de Visual Basic clásico en Foros del Web. Saludos amigos Lo dicho. Alguien sabe como se puede ejecutar una instrucción DOS desde VB6... algo así como: copy *.dbf \\192.168.0.1\1 Es para hacer una ...
  #1 (permalink)  
Antiguo 28/09/2005, 06:14
jorevale
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Ejecutar instrucción DOS desde VB6 en ejecución

Saludos amigos

Lo dicho. Alguien sabe como se puede ejecutar una instrucción DOS desde VB6... algo así como:

copy *.dbf \\192.168.0.1\1

Es para hacer una salva de las bases desde el programa en una máquina diferente. En el ejemplo hacia la carpeta 1, recurso compartido de la red con acceso a todos los usuarios autentificados al dominio, en la máquina de dicha dirección IP

En VFoxPro se podía hacer mediante la instrucción RUN ó !, pero en VB no sé como hacerlo.

Gracias
  #2 (permalink)  
Antiguo 28/09/2005, 12:24
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
podrías crear el bat y llamarlo desde el tu form de vb.

nos vemos.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 28/09/2005, 12:30
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 19 años, 10 meses
Puntos: 0
O puedes hacer esto:
Código:
Public Comando As String
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Const STILL_ACTIVE = &H103
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess&, ByVal bInheritHandle&, ByVal dwProcessId&) _
As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) _
As Long
Código:
Sub EsperarShell(sCmd As String)
Dim hShell As Long
Dim hProc As Long
Dim codExit As Long
' ejecutar comando
hShell = Shell(Environ$("Comspec") & " /c " & sCmd, 2)
' esperar a que se complete el proceso
hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, hShell)
Do
    GetExitCodeProcess hProc, codExit
    DoEvents
Loop While codExit = STILL_ACTIVE
MsgBox "El Proceso ha Terminado", vbInformation + vbOKOnly, "Mensaje"
End Sub
y lo mandas llamar asi:
Código:
comando="tu comando de ms-dos"
EsperarShell (Comando)
  #4 (permalink)  
Antiguo 28/09/2005, 12:51
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
En vez de usar GetExitCodeProcess podes usa WaitForSingleObject, es mucho mas eficiente de esa manera.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 14/10/2005, 06:55
jorevale
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Alguien recuerda si en MS-DOS se podían copiar subcarpetas?

Hola amigos

Mi intención con esto era hacer un ejecutable VB, que (mediante una tarea programada) a determinara hora - digamos a las 23:00 - me hiciera una salva diaria de una carpeta con todas sus subcarpetas.

En dicho proceso el programa crea una carpeta que confecciona a partir de las variables
VMonth1 = Trim(Str(Month(Date)))
VDay1 = Trim(Str(Day(Date)))
y en ella copia los datos.

Pero yo no quiero que medie intervención humana, por eso quité el botón de comando y lo puse en el Form_Load, ejecutando un proceso llamado MKDIR.

El programa se ejecuta perfectamente, pero sólo copia los ficheros del directorio raíz, en este caso, de D:\0

Alguien recuerda o sabe si se podrían copiar tambien las subcarpetas?

************

El código me queda así:

Public Comando As String
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Const STILL_ACTIVE = &H103
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess&, ByVal bInheritHandle&, ByVal dwProcessId&) _
As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) _
As Long
Private VCadena As String
Private VMonth1 As String
Private VDay1 As String

Sub EsperarShell(sCmd As String)
Dim hShell As Long
Dim hProc As Long
Dim codExit As Long
' ejecutar comando
hShell = Shell(Environ$("Comspec") & " /c " & sCmd, 2)
' esperar a que se complete el proceso
hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, hShell)
Do
GetExitCodeProcess hProc, codExit
DoEvents
Loop While codExit = STILL_ACTIVE
'MsgBox "El Proceso ha Terminado", vbInformation + vbOKOnly, "Mensaje"
End Sub

Private Sub MKDIR()
VMonth1 = Trim(Str(Month(Date)))
VDay1 = Trim(Str(Day(Date)))
VCadena = "MD D:\1\" & VMonth1 & "-" & VDay1
Comando = VCadena
EsperarShell (Comando)
VCadena = "COPY D:\0\*.* D:\1\" & VMonth1 & "-" & VDay1
Comando = VCadena
EsperarShell (Comando)
End Sub

Private Sub Form_Load()
MKDIR
End
End Sub
  #6 (permalink)  
Antiguo 14/10/2005, 07:48
jorevale
Invitado
 
Mensajes: n/a
Puntos:
Xcopy /s

Me respondo yo mismo

XCOPY /S resuelve lo anterior.

Salu2
  #7 (permalink)  
Antiguo 14/10/2005, 22:28
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
Cita:
Iniciado por jorevale
Me respondo yo mismo

XCOPY /S resuelve lo anterior.

Salu2
hacelo con un *.bat y liisto
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #8 (permalink)  
Antiguo 15/10/2005, 14:07
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
hola jorevale, lei tu privado, bue para ejecutar el *.bat es facil
shell = ("ruta", vbmaximicedfocus )
cualkier cosa te explico por msn
salu2
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #9 (permalink)  
Antiguo 16/10/2005, 08:12
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Cita:
Iniciado por aldo1982
cualkier cosa te explico por msn
salu2
Gracias por incluir a los foreros en las explicaciones...

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #10 (permalink)  
Antiguo 17/10/2005, 14:17
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
De acuerdo

Cita:
Iniciado por GeoAvila
Gracias por incluir a los foreros en las explicaciones...

nos vemos..
bue la verdad es ke cuando tengo tiempo trato de aportar lo maximo ke puedo en este foro ya ke a mi me ayudan mucho y bue de alguna manera hay ke hacer algo.
salu2..y bue vos GEO ni hablar, siempre dando soluciones a todo el mundo :P
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #11 (permalink)  
Antiguo 17/10/2005, 14:44
Avatar de lop7  
Fecha de Ingreso: junio-2005
Ubicación: portuguesa (Venezuela)
Mensajes: 187
Antigüedad: 18 años, 10 meses
Puntos: 1
jejejeje

Cita:
Iniciado por aldo1982
bue la verdad es ke cuando tengo tiempo trato de aportar lo maximo ke puedo en este foro ya ke a mi me ayudan mucho y bue de alguna manera hay ke hacer algo.
salu2..y bue vos GEO ni hablar, siempre dando soluciones a todo el mundo :P
si pero creo que lo q dice geo es q al explicar por msn no involucras a los foreros..jejeje
__________________
A quien dices un secreto le entregas tu libertad :si:
  #12 (permalink)  
Antiguo 17/10/2005, 15:08
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
Cita:
Iniciado por lop7
si pero creo que lo q dice geo es q al explicar por msn no involucras a los foreros..jejeje
ajaj entendi mal tonces
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #13 (permalink)  
Antiguo 18/10/2005, 07:54
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Cita:
Iniciado por lop7
si pero creo que lo q dice geo es q al explicar por msn no involucras a los foreros..jejeje
exacto a eso me refería..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
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 20:23.