none
Porque no se redirecciona correctamente StandardOutputEncoding

    Pregunta

  • Hola.

    Dim pcsi As New ProcessStartInfo()
    Dim prcs As New Process()
    pcsi.UseShellExecute = False
    pcsi.CreateNoWindow = True
    pcsi.RedirectStandardOutput = True
    pcsi.FileName = "cmd "
    pcsi.Arguments = "/c " & "dir " + " /s /b " + TextBox1.Text + " *.*" + ">""" + TextBox2.Text+ """"
    prcs.StartInfo = pcsi
    prcs.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(1252)
    prcs.Start()

    En el archivo que se lee, (TextBox1,Text), están los archivos:

    oceanografía.txt
    matemáticas.txt
    construcción.txt
    España.txt

    Pero en el archivo que se escribe, (TextBox2.Text), se escribe lo siguiente:

    G:\oceanograf¡a.txt (lo que parece una "i" es un signo de admiración "¡!")
    G:\matem ticas.txt
    G:\construcci¢n.txt
    G:\espa¤a.txt

    Que puedo hacer para que se escriba correctamente el archivo de salida?

    Gracias.


    Rafael FM

    miércoles, 9 de noviembre de 2016 0:08

Respuestas

  • Ya he conseguido lo que necesitaba, empezando desde el principio y escribiendo lo mas simplemente posible.

            Dim mprc As New Process
            mprc.StartInfo.FileName = "cmd.exe"
            mprc.StartInfo.Arguments = "/c dir /s /b g:\"
            mprc.StartInfo.RedirectStandardOutput = True
            mprc.StartInfo.UseShellExecute = False
            mprc.StartInfo.CreateNoWindow = True
            mprc.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(850)
            mprc.Start()
            RichTextBox1.AppendText(mprc.StandardOutput.ReadToEnd)

    Muchas gracias por la ayuda que pudieron prestar.


    Rafael FM


    • Editado RafaelFM miércoles, 9 de noviembre de 2016 9:58
    • Marcado como respuesta Laura CeglzModerator viernes, 11 de noviembre de 2016 15:48
    miércoles, 9 de noviembre de 2016 9:58

Todas las respuestas

  • Prueba con el encoding 850 en lugar de con el 1252. Digo "prueba" porque no estoy seguro de entender lo que quieres hacer. Al menos no, si no nos das un ejemplo de los datos. Un ejemplo de los valores que pueden asumir las propiedades Text de los textboxes.

    Pegar el código y no proporcionar los datos es lo mismo que nada... es imposible debuguear sin datos.


    miércoles, 9 de noviembre de 2016 1:09
  • Gracias por responder Walter_5

    Con el código siguiente creo que se entenderá mejor.

    Imports System.Text
    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim pcsi As New ProcessStartInfo()
            Dim prcs As New Process()
            pcsi.UseShellExecute = False
            pcsi.CreateNoWindow = True
            pcsi.RedirectStandardOutput = True
            pcsi.FileName = "cmd "
            pcsi.Arguments = "/c " & "dir /s /b d:\>e:\salida.txt"
            prcs.StartInfo = pcsi
            prcs.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(850)
            prcs.Start()
        End Sub
    End Class

    Gracias por sus respuestas.

    Edito: Sigue ocurriendo lo mismo.


    Rafael FM


    • Editado RafaelFM miércoles, 9 de noviembre de 2016 1:25
    miércoles, 9 de noviembre de 2016 1:24
  • Ya he conseguido lo que necesitaba, empezando desde el principio y escribiendo lo mas simplemente posible.

            Dim mprc As New Process
            mprc.StartInfo.FileName = "cmd.exe"
            mprc.StartInfo.Arguments = "/c dir /s /b g:\"
            mprc.StartInfo.RedirectStandardOutput = True
            mprc.StartInfo.UseShellExecute = False
            mprc.StartInfo.CreateNoWindow = True
            mprc.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(850)
            mprc.Start()
            RichTextBox1.AppendText(mprc.StandardOutput.ReadToEnd)

    Muchas gracias por la ayuda que pudieron prestar.


    Rafael FM


    • Editado RafaelFM miércoles, 9 de noviembre de 2016 9:58
    • Marcado como respuesta Laura CeglzModerator viernes, 11 de noviembre de 2016 15:48
    miércoles, 9 de noviembre de 2016 9:58