Nach USB-Stick suchen

  • Hallo zusammen

    Ich habe eben ein bissel im Forum gelesen und habe nun eine Frage...
    Wie kann ich mein Skript nach einem USB-Stick suchen lassen und es erst dann fortsetzten??

    Das mit dem Anhalten und fortsetzten wenn die Bedingung USB-Stick erfüllt ist bekomme ich hin...

    Danke

    Einmal editiert, zuletzt von Basti2022 (21. Juli 2012 um 16:52)

  • Ich habe mir das mal angesehen...

    Ist nicht das was ich suche oder ich habe es nicht verstanden...


    Ich will das Skript erst fortsetzten wenn der USB-Stick mit passemdem Namen(Also ein vorher festgelegter) oder mit einer festgelegten TXT. Datei... Vorhanden ist...

    Besser ne TXT. Und dann den Inhalt Auslesen...

  • Nooblike-Lösung:

    [autoit]

    Do
    Sleep (5000)
    Until FileExists ('E:\datei.txt')
    MsgBox (16, 'Inhalt von E:\datei.txt', FileRead ('E:\datei.txt'))

    [/autoit]
  • Sieht auch gut aus hatte ich aber schon... ;). (gerade geschrieben)

    Das Problem was ich jetzt noch habe ist das ich ja nicht immer weiß ob der Stick in E: oder F: oder xyz ist...

    Und nur wenn ich das weiß geht das mit dem lesen der txt.

  • hi

    da hat schon mal wer ein tool geschrieben dass externe datenträger erkennt und für diese einen link auf dem desktop erstellt - hier im deutschen forum.

    du kannst davon die basis verwenden und wenn der name passt und dann noch die datei voehanden ist diese auslesen und sw

    weiß nur nicht mehr wie es heisst ^^

    mfg

  • hi

    da hat schon mal wer ein tool geschrieben dass externe datenträger erkennt und für diese einen link auf dem desktop erstellt - hier im deutschen forum.

    du kannst davon die basis verwenden und wenn der name passt und dann noch die datei voehanden ist diese auslesen und sw

    weiß nur nicht mehr wie es heisst ^^

    mfg

    Es heißt Link me! und ist von mir :)

  • Wie ich schon sagte: Mit DriveGetDrive bekommst du alle Laufwerke welche Wechseldatenträger darstellen heraus.
    Mit dieser Information und DriveGetLabel kannst du dann auch checken ob die Bezeichnung der entspricht nach der du suchst.

  • Oha...

    Da Steige ich jetzt net sooo durch...

    Kann mir jemand sagen was davon nach dem Speichermedium sucht und eben zwischen e: und F: den Unterschied erkennt?

  • [autoit]


    Local $aArray = DriveGetDrive("ALL")
    If @error Then
    ; An error occurred when retrieving the drives.
    MsgBox(4096, "DriveGetDrive", "It appears an error occurred.")
    Else
    $string = ""
    For $i = 1 To $aArray[0]
    $path = StringUpper( $aArray[$i] )&"\"
    $string &= $path &" "&DriveGetLabel( $path )&@CRLF
    Next

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

    MsgBox(4096,"verfügbare devices", $string )

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

    EndIf

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

    hoffe das hilft :)

  • Bei meinem myAutorun Script hatte ich eine Funktion eingebaut die den selben Zweck hatte...

    Spoiler anzeigen
    [autoit]

    Func __NewDriveConnected($TYP = 'ALL')
    Local $i, $y, $NewList, $Found, $Del[1] = [0], $Return[1] = [0]
    $NewList = DriveGetDrive($TYP)
    ; Entfernte Drives null setzen:
    For $i = 1 To $DriveList[0] Step +1
    $Found = False
    For $y = 1 To $NewList[0] Step +1
    If $DriveList[$i] = $NewList[$y] Then
    $Found = True
    ExitLoop
    EndIf
    Next
    If Not $Found Then
    _ArrayAdd($Del, $i)
    $Del[0] += 1
    EndIf
    Next
    ; Null gesetzte Drives löschen:
    For $i = 1 To $Del[0] Step +1
    _ArrayDelete($DriveList, $Del[$i])
    Next
    ; Neues Drive finden:
    For $i = 1 To $NewList[0] Step +1
    $Found = False
    For $y = 1 To $DriveList[0] Step +1
    If $NewList[$i] = $DriveList[$y] Then
    $Found = True
    ExitLoop
    EndIf
    Next
    If Not $Found Then
    _ArrayAdd($Return, $NewList[$i])
    $Return[0] += 1
    EndIf
    Next
    $DriveList = $NewList
    Return $Return
    EndFunc ;==>__NewDriveConnected

    [/autoit]

    LG
    Christoph :)

  • ICH BINS NOCHMAL

    ich habe jetzt das skript von Feath benutzt und angepasst...
    statt "All" suche ich jetzt nach "REMOVABLE" und es geht...

    mein USB-Stick heißt: Test Stick

    es wird in einer Msgbox so ausgegeben: E:/ Test Stick

    wie kann ich falls ich jetzt mehrere Sticks dran habe eben den "Test Stick" raussuchen (also quasi alle anderen aus dem String löschen), damit ich den Pfad nutzten kann um meine TXT. datei zu öffnen?????

  • [autoit]

    $Text = ""

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

    $Datei1 = FileOpen ("E:\Neu.txt")
    $Datei2 = FileOpen ("F:\Neu.txt")
    $Datei3 = FileOpen ("G:\Neu.txt")
    If $Datei1 = -1 Then

    ElseIf $Datei1 <> -1 Then
    $Text = FileRead ($Datei1)


    EndIf


    If $Datei2 = -1 Then

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

    ElseIf $Datei2 <> -1 Then
    $Text = FileRead ($Datei2)

    EndIf

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

    If $Datei3 = -1 Then

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

    ElseIf $Datei3 <> -1 Then
    $Text = FileRead ($Datei3)

    EndIf


    If $Text = "Hall" Then
    MsgBox (0,"Identifiziert als","Basti2022")
    Else
    Exit
    EndIf

    [/autoit]

    es ist nicht schön aber es geht...

  • Warum versuchst du es denn nicht mit den Hinweisen die dir hier schon mehrfach genannt wurden?

    Probier es doch einmal damit und wenn konkrete Probleme auftreten kann man dir dann anhand deines Skriptes sicherlich weiterhelfen.
    Gehen wir nochmal prinzipiell durch wie du dein Ziel mit DriveGetDrive und DriveGetLabel erreichen kannst:

    • DriveGetDrive in Verbindung mit dem Parameter "Removable" gibt dir alle Laufwerksbuchstaben der Wechseldatenträger in deinem System zurück.
    • Der Rückgabewert ist ein Array in dem die einzelnen Laufwerksbuchstaben stehen (am besten einfach mal mit _ArrayDisplay() anschauen wie das Array aufgebaut ist)
    • Die einzelnen ArrayElemente und damit die einzelnen Laufwerksbuchstaben musst du einzeln abarbeiten. Ein Array geht man am besten in einer Schleife durch, z.B. mit einer For-To-Schleife. (am besten einfach mal das Beispiel in der Hilfe zu DriveGetDrive ansehen)
    • In der Schleife steht dann das was du mit den einzelnen Array-Elementen - also deine Laufwerksbuchstaben - einzeln machen willst. In deinem Fall möchtest du rausbekommen ob das jeweilige Laufwerk die Bezeichnung "Test Stick" trägt.
    • Die Bezeichnung bekommst du mit DriveGetLabel heraus in dem du der Funktion den Laufwerksbuchstaben übergibst. Die einzelnen Laufwerksbuchstaben hast du ja schon - deine Array-Elemente.
    • Jetzt musst du nur noch mit If-Then prüfen ob der Rückgabewert von DriveGetLabel des derzeitigen Laufwerkes "Test Stick" entspricht und in diesem Fall entsprechend reagieren.
  • ok ich habe es mir mal gespeichert also deinen Text und werde es mir dann mal ansehen...

    danke