Substbefehl in AutoIt umsetzen
-
- [ offen ]
-
TOMTOM25m -
13. Oktober 2008 um 09:30 -
Geschlossen -
Erledigt
-
-
ö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
TOMdas kannste doch mit konsolen befehlen auch machen und die kannste mit run aufrufen.
-
[autoit]
$Subst = StringSplit('subst','/')
[/autoit][autoit][/autoit][autoit]For $i = 1 To $Subst[0]
[/autoit]
Run(@ComSpec & " /c " & 'subst "'&$Subst[$i]&'"', "", @SW_HIDE)
Next -
[autoit]Alles anzeigen
FOR "usebackq delims=\" CommandLine[1] IN (`subst`)
[/autoit]
Run("subst " & CommandLine[1]")
Next
Nur weiß ich nicht, was dieses useback... soll, habs einfach gelassen.
%%s ist der Parameter, oder?
aber:
NOT WORKING!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
[/autoit]
", "", @SW_HIDE)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]
[/autoit]
Run(@ComSpec & " /c " & 'subst "'&$Subst[$i]&'"', "", @SW_HIDE)
Next?? 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?
-
Der befehl soll alle auf dem rechner verbundene virtuellen laufwerke trennen
(im Batch funkts)
hab jetzt mal _runDOS probiert mit dem gehts Ist zwar nicht die feine Art aber anders geht ned wirklich.
vg
TOM
-
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?
[autoit]
Auch für die NICHT-Subst-Laufwerke? Dann gibts halt nen Fehler, was solls?
Ungetestet:#include <Process.au3>
[/autoit]
$lw = 65
for $lw to 90 step 1
run("subst " & chr($lw) & ": /D")
NextAch, und wer auch immer aus meinem nicht mehr existierenden Post zitiert, ist doof, weil der falsch war...
-
Laut
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.
[autoit]
Wenn ich alles richtig verstanden habe sollte es so gehen:$Subst = StringSplit(FileRead('subst'),'/')
[/autoit][autoit][/autoit][autoit]For $i = 1 To $Subst[0]
[/autoit]
Run(@ComSpec & " /c " & 'subst "'&$Subst[$i]&'" /d', "", @SW_HIDE) Next
Next -
Meine Lösung:
Spoiler anzeigen
[autoit]#include <array.au3>
[/autoit] [autoit][/autoit] [autoit]
Dim $out
Dim $pid$pid = Run('"' & @ComSpec & '" /c subst','',@SW_HIDE,6)
[/autoit] [autoit][/autoit] [autoit]
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)-1For $i = 1 To $subst_array[0]
[/autoit]
RunWait('"' & @ComSpec & '" /c subst ' & StringLeft($subst_array[$i],2) & ' /D','',@SW_HIDE)
Next