none
ejecutar comando dos RRS feed

  • Pregunta

  • Estimados, estoy desarrollando una aplicación con Visual Studio 2010, Vb.Net.

    Tengo la necesidad de ejecutar un comando DOS, dicho comando me pide que ingrese un parámetro y no se como hacerlo desde programacion.

    Lo que estoy haciendo es mandar a generar un respaldo de una base de datos oracle y el script me pide la clave del usuario de la base de datos, entonces no se como hacer eso desde programación, agradecería me pudieran ayudar.


    wag_cor

    miércoles, 30 de agosto de 2017 3:08

Respuestas

  • Suponiendo que el programa que lanzas está leyendo el dato a través de la entrada standard, puedes tomar control de esa entrada poniendo RedirectStandardInput=true en el ProcessStartInfo, y luego enviando los datos al StandardInput del Process. Hay un ejemplo al final de la documentación:

    https://msdn.microsoft.com/es-es/library/system.diagnostics.processstartinfo.redirectstandardinput(v=vs.110).aspx

    Pero si el programa no usa el StandardInput, sino alguna otra técnica como por ejemplo llamar directamente al BIOS (cosa que a veces se hace en programas que, por ejemplo, preguntan por una contraseña y no quieren que salgan los caracteres en pantalla), entonces la cosa puede ser más complicada. Tal vez tengas que recurrir a dejar que el comando se ejecute en una ventana visible, y enviarle los caracteres con SendKeys.Send.

    miércoles, 30 de agosto de 2017 6:09

Todas las respuestas

  • Suponiendo que el programa que lanzas está leyendo el dato a través de la entrada standard, puedes tomar control de esa entrada poniendo RedirectStandardInput=true en el ProcessStartInfo, y luego enviando los datos al StandardInput del Process. Hay un ejemplo al final de la documentación:

    https://msdn.microsoft.com/es-es/library/system.diagnostics.processstartinfo.redirectstandardinput(v=vs.110).aspx

    Pero si el programa no usa el StandardInput, sino alguna otra técnica como por ejemplo llamar directamente al BIOS (cosa que a veces se hace en programas que, por ejemplo, preguntan por una contraseña y no quieren que salgan los caracteres en pantalla), entonces la cosa puede ser más complicada. Tal vez tengas que recurrir a dejar que el comando se ejecute en una ventana visible, y enviarle los caracteres con SendKeys.Send.

    miércoles, 30 de agosto de 2017 6:09
  • Estimado Jorge, gracias por tu respuesta.

    La verdad soy nuevo en este tema de trabajar con la consola de windows desde programación.

    El código que estoy utilizando es el siguiente.

            myprocess.StartInfo.FileName = "cmd.exe"
            myprocess.StartInfo.Arguments = "/c" & txtcomando.Text
            myprocess.StartInfo.RedirectStandardError = True
            myprocess.StartInfo.RedirectStandardOutput = True
            myprocess.StartInfo.UseShellExecute = False
            myprocess.StartInfo.CreateNoWindow = True

            Try
                myprocess.Start()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

    El comando que yo le paso a mi función una vez que se ejecuta me pide que ingrese un código de confirmación, y ese código es el que necesito que lo escriba la misma aplicación, para que el comando enviado se ejecute completamente.

    Gracias.


    wag_cor

    miércoles, 30 de agosto de 2017 16:34