CMD Output speichern als Unicode

  • Spoiler anzeigen
    [autoit]

    #include <Constants.au3>

    [/autoit][autoit][/autoit][autoit]

    $read = _CMDRead('Tree "Z:\test"')
    ConsoleWrite($read)
    $hFile = FileOpen('Tree-Output.txt',2+32)
    FileWrite($hFile, $read)
    FileClose($hFile)

    [/autoit][autoit][/autoit][autoit]

    Func _CMDRead($command)
    Local $line

    [/autoit][autoit][/autoit][autoit]

    $CMD = Run(@ComSpec & " /c " & $command, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $line &= StdoutRead($CMD)
    If @error Then ExitLoop
    WEnd
    Return $line
    EndFunc ;==>_CMDRead

    [/autoit]


    Mit Tree "Z:\test" |clip und dann manuell einfügen bekomme ich genau was ich haben will nur ist das natürlich nicht praktisch zum automatisieren

    Parameter /a macht auch nicht was ich haben will sieht dann zwar besser aus aber halt ascii-art like.

    Tip?

    Einmal editiert, zuletzt von BiNu (20. August 2014 um 01:16)

  • Moin!

    Diese Zeile hilft:

    [autoit]

    $line = _WinAPI_MultiByteToWideChar($line, 437, Default, True)

    [/autoit]

    Eine Auflistung verschiedener Codepages (2ter Parameter) findest du zB hier: http://de.wikipedia.org/wiki/Zeichensatztabelle


    Ins skript eingebaut:

    [autoit]

    #include <Constants.au3>
    #include <WinAPI.au3>

    [/autoit][autoit][/autoit][autoit]

    $read = _CMDRead('Tree "Z:\test"')
    ConsoleWrite($read)
    $hFile = FileOpen('Tree-Output.txt',2+32)
    FileWrite($hFile, $read)
    FileClose($hFile)

    [/autoit][autoit][/autoit][autoit]

    Func _CMDRead($command)
    Local $line

    [/autoit][autoit][/autoit][autoit]

    $CMD = Run(@ComSpec & " /c " & $command, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $line &= StdoutRead($CMD)
    If @error Then ExitLoop
    WEnd
    ;==>
    $line = _WinAPI_MultiByteToWideChar($line, 437, Default, True)
    ;<==
    Return $line
    EndFunc ;==>_CMDRead

    [/autoit]


    Sanfte Grüße :D

  • Machs doch so, nicht die beste Möglichkeit, aber wenigstens eine;)

    *EDIT: Ups da war wohl jemand schneller:D

    [autoit]

    #include <Constants.au3>

    [/autoit][autoit][/autoit][autoit]

    $old = ClipGet()
    $read = _CMDRead('Tree "Z:\test" |clip')
    ;~ ConsoleWrite($read)
    $hFile = FileOpen('Tree-Output.txt', 2+32)
    FileWrite($hFile, ClipGet())
    FileClose($hFile)
    ClipPut($old)

    [/autoit][autoit][/autoit][autoit]

    Func _CMDRead($command)
    Local $line

    [/autoit][autoit][/autoit][autoit]

    $CMD = Run(@ComSpec & " /c " & $command, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $line &= StdoutRead($CMD)
    If @error Then ExitLoop
    WEnd
    Return $line
    EndFunc

    [/autoit]
  • Friesel :thumbup: Genau das hab ich gesucht :) besten dank

    Friesel Dir auch ein danke :) Leider kann ich das so aber nicht einsetzten weil das Script im Hintergrund regelmässig das File aktualisiert und zwar an einem PC an dem "gearbeitet" wird. Murphy's Law ;)