DOS-Abfrage -> Ordnerinhalt auflisten und in txt-Datei schreiben (Variablen Problem)

  • Hallo,

    eine kleine Frage an euch alle, da ich iwie nicht mehr weiterkomme und alle Beispiele die ich bei Google finden kann, behandeln das Problem nicht :(

    Ich möchte folgenden Befehl ausführen:
    RunWait(@COMSPEC & " /c Dir " & $Path & " > test.txt", "", @SW_HIDE)



    Leider wird mir die Variable "$Path" nicht ausgewertet. Diese Variable wird mit RegRead aus der Registry ausgelesen

    Wenn ich z.B. folgenden Befehl ausführe klappt das ganze und es wird die txt-Datei beschrieben:
    RunWait(@COMSPEC & " /c Dir " & @WindowsDir & " > test.txt", "", @SW_HIDE)



    Kann mir jemand sagen, wie ich diese Abfrage hinbekommen kann ?
    Danke schon mal im voraus.


  • Das volle Scrit ist folgendes:


    $Path1 = "HKLM\Software"
    If @OSArch = "X86" Then
    $Path2 = "\7-Zip\"
    Else
    $Path2 = "\Wow6432Node\7-Zip\"
    EndIf
    $RootPath = $Path1 & $Path2
    $Path = RegRead($RootPath, "Path")


    RunWait(@COMSPEC & " /c Dir " & $Path & " > test.txt", "", @SW_HIDE)

  • Versuch mal so:

    [autoit]

    $Path1 = "HKLM\SOFTWARE"
    If @OSArch = "X86" Then
    $Path2 = "\7-Zip"
    Else
    $Path2 = "\Wow6432Node\7-Zip"
    EndIf
    $RootPath = $Path1 & $Path2
    $Path = RegRead($RootPath, "Path")

    [/autoit]

    Achso kleiner Hinweis wenn du es auf 64bit probierst dann beachte bitte folgendes:

    Zitat

    Falls bei einem 64-Bit Windows auf die speziellen Einträge des 64-Bit Systems zugegriffen werden soll, muss dem Begriff HK... das Suffix 64 angehängt werden (z. B. HKLM64).

  • Ein anderes Beispiel, scheinbar hat @COMSPEC ein Problem mit Leerzeichen im Namen,
    siehe folgendes Beispiel:


    $Path = ('C:\Neuer Ordner')
    RunWait(@COMSPEC & " /c Dir " & $Path & " > test.txt", "", @SW_HIDE)


    Hier wird der Ordnerinhalt leider auch nicht aufgelistet :(


  • BugFix dachte ich auch machste so aber kannste vergessen die Text Datei bleibt leer die frage ist ob das mit den ausgelesen Pfad aus der Registrie geht dieses Beispiel funktioniert bei mir nicht:

    [autoit]

    $Path = "C:\Neuer Ordner"
    RunWait(@COMSPEC & " /c Dir '" & $Path & "' > test.txt", "", @SW_HIDE)

    [/autoit]

    Mach ich es so funktioniert es:

    [autoit]

    $Path = '"C:\Neuer Ordner"'
    RunWait(@COMSPEC & " /c Dir " & $Path & " > test.txt", "", @SW_HIDE)

    [/autoit]

    Gruss DevFly

  • Hi,
    zuerst dachte ich, es könnte etwas mit @SW_Hide zu tun haben, aber das war ein Irrtum..
    Wenn du /c mal durch /k ersetzt, kommste ganz einfach auf folgende Lösung:

    [autoit]

    $Path = "C:\WinSubC\"
    RunWait(@COMSPEC & ' /c Dir "' & $Path & '" >test.txt', "", @SW_Hide)

    [/autoit]

    Stör' dich bitte nicht an dem Verzeichnisnamen, denn 'Neuer 'Ordner' gibt es IMMER NUR kurzfristig auf meinem Rechner^^
    Viel Spaß beim Auflisten
    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..