Substbefehl in AutoIt umsetzen

  • öhm, ich kenn mich nich soo gut mit batch aus oder was das is, kannste noch schreiben, was da genau passieren soll?

  • der Subst Befehl besagt : """""
    Verknüpft einen Pfad mit einem Laufwerkbuchstaben.
    Der von Ihnen zugewiesene Laufwerkbuchstabe entspricht einem virtuellen Laufwerk, weil Sie den Laufwerkbuchstaben in Befehlen so einsetzen können, als entspräche er einem physischen Laufwerk."""""
    da heisst: Ich will mit dem Befehl einfach beim Starten des Computers alle virtuellen Laufwerle trennen
    lg
    TOM

  • der Subst Befehl besagt : """""
    Verknüpft einen Pfad mit einem Laufwerkbuchstaben.
    Der von Ihnen zugewiesene Laufwerkbuchstabe entspricht einem virtuellen Laufwerk, weil Sie den Laufwerkbuchstaben in Befehlen so einsetzen können, als entspräche er einem physischen Laufwerk."""""
    da heisst: Ich will mit dem Befehl einfach beim Starten des Computers alle virtuellen Laufwerle trennen
    lg
    TOM

    das kannste doch mit konsolen befehlen auch machen und die kannste mit run aufrufen.

  • falls das oben ein konsolen befehl ist dann kannst du das einfach mit

    [autoit]

    Function Run(@ComSpec & " /c FOR /F "usebackq delims=\" %%s IN (`subst`) DO subst %%s /d
    ", "", @SW_HIDE)

    [/autoit]

    oder mit batch: halt in eine datei schreiben und die datei.BAT nennen und dann ausführen.

    wo hast du diesen befehl denn her? bzw. wie wird der eigentlich ausgeführt?

  • [autoit]

    $Subst = StringSplit('subst','/')

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

    For $i = 1 To $Subst[0]
    Run(@ComSpec & " /c " & 'subst "'&$Subst[$i]&'"', "", @SW_HIDE)
    Next

    [/autoit]

    ?? was soll hier denn passieren:

    dieses script unterteilt den string "subst" an allen stellen mit einem "/" in einen array und schreibt die einzelnen teile dann in den comspec befehl

    ist das so gedacht??

    oder wolltest du etwas anderes machen?

  • Das geht so in AutoIt nicht.
    Da kommt raus:
    $Subst[0]=1
    $Subst[1]="subst"

    Könntest du das nicht für ALLE Laufwerke machen?
    Auch für die NICHT-Subst-Laufwerke? Dann gibts halt nen Fehler, was solls?
    Ungetestet:

    [autoit]

    #include <Process.au3>
    $lw = 65
    for $lw to 90 step 1
    run("subst " & chr($lw) & ": /D")
    Next

    [/autoit]

    Ach, und wer auch immer aus meinem nicht mehr existierenden Post zitiert, ist doof, weil der falsch war...

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Laut

    Code
    FOR /F "usebackq delims=\" %%s IN (`subst`) DO subst %%s /d


    gibt es eine Datei 'subst' in der alle Laufwerke stehen, welche mit dem Befehl subst erzeugt wurden. Diese Datei könnte so aussehen: e:/f:/g:/h:/i:/j:

    Ich habe aber noch einige Fehler in meinem Skript. ;)
    Wenn ich alles richtig verstanden habe sollte es so gehen:

    [autoit]

    $Subst = StringSplit(FileRead('subst'),'/')

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

    For $i = 1 To $Subst[0]
    Run(@ComSpec & " /c " & 'subst "'&$Subst[$i]&'" /d', "", @SW_HIDE) Next
    Next

    [/autoit]
  • Meine Lösung:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Dim $out
    Dim $pid

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

    $pid = Run('"' & @ComSpec & '" /c subst','',@SW_HIDE,6)
    While 1
    If StdOutRead($pid,0,True) <> 0 Then
    $out &= StdoutRead($pid)
    Endif
    If @error Then ExitLoop
    Sleep(100)
    WEnd
    $subst_array = StringSplit($Out,@CRLF,1)
    _ArrayDelete($subst_array,UBound($subst_array)-1)
    $subst_array[0] = UBound($subst_array)-1

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

    For $i = 1 To $subst_array[0]
    RunWait('"' & @ComSpec & '" /c subst ' & StringLeft($subst_array[$i],2) & ' /D','',@SW_HIDE)
    Next

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"