Datei durchsuchen

  • Hi Leute!

    Ich suche eine Methode eine Textdatei auslesen zu lassen.
    Ich möchte ein ganz bestimmtes Wort suchen und testen, ob es in der Datei vorkommt.

    Unzwar hab ich das Problem, dass ich testen muss, ob ein Programm eine Verbindung zu einem Host hergestellt hat. Dazu habe ich eine Textdatei per "cmd.exe ipconfig /all > temp.txt" erstellen lassen und möchte jetzt herausfinden lassen, ob in der Textdatei der String "keine Verbindung" vorkommt. Vielleicht hat noch jemand eine Idee das ganz anders zu lösen!? :)

    Zeile auslesen nützt mir leider nichts, da die ipconfig unterschiedlich viele einträge enthalten kann.

    Ich bin etwas hilflos... sollte ich da "schon" an der Grenze von Autoit angekommen sein?


    MFG Joe

    Einmal editiert, zuletzt von daflowjoe (13. Oktober 2006 um 08:54)

    • Offizieller Beitrag
    Zitat

    Zeile auslesen nützt mir leider nichts, da die ipconfig unterschiedlich viele einträge enthalten kann.


    Lies doch die Zeilen in ein Array aus und vergleiche mit deinem Suchbegriff. In etwa so:

    [autoit]


    #include <file.au3>
    Dim $aRecords
    If Not _FileReadToArray("temp.txt",$aRecords) Then
    MsgBox(4096,"Error", " Fehler beim Einlesen der Datei Fehler:" & @error)
    Exit
    EndIf
    For $x = 1 to $aRecords[0]
    If StringInStr($aRecords[$x], "keine Verbindung") Then ; Eintrag ist vorhanden
    ; was immer du dann machen willst
    ExitLoop
    EndIf
    Next

    [/autoit]

    Edit: Da war 'ne Klammer zuviel... :whistling:

  • ich hatet da mal was ähnliches gemacht

    check.bat:

    Code
    net view >netview.txt 
    FOR /F "skip=3 tokens=1" %%A in (netview.txt) do call suchen.bat %%A

    suchen.bat:

    Code
    echo %1 >>ok.txt 
    FOR /F "tokens=1" %%A IN (ok.txt) do if %%A == %1 goto ende 
    dir %1\C$\WINDOWS\system32\PSEXESVxC.EXE  /s > %1.txt 
    :ende

    aufgerufen wird die check.bat

    was passiert?
    er fragt im netzwerk ab welche rechner sind da und schreibt sie in eine Datei "netview.txt"
    und dann mit der suchen.bat überprüft er jeden rechner der in der netview.txt steht

    ob im verzeichniss eine gewisse Datei liegt und gibt die die keine haben in eine extra datei namens ok.txt aus
    und die rechner die eine haben legt er eine extra datei an mit dem namen des pcs.


    ein bischen umbauen das script
    und den find befehl nutzen wenn ich bischen zeit haben könnte ich auch mal schauen
    find /?
    find "verbindung" c:\deinetextdatei.txt

    aber bugfix macht dat schon :D

    Einmal editiert, zuletzt von iexplorer (13. Oktober 2006 um 09:32)

  • danke erstmal für die umfangreichen antworten

    zweiteres is in meinen Fall leider nicht so nützlich, da nicht wirklich ein cumputername, der im netzwerk getestet werden soll, sondenr eine vpn verschlüsselte Verbindung, die verschieden sein kann, aber das Problem is trotzdem ähnlich. Von daher auch gut gelöst =)

    Bei der Schleife kommt bei mir folgender Fehler bneim Compilieren, womit ich nix anfangen kann....

    C:\Programme\gateProtect\VPN Client\config\Setup.au3 (40) : ==> Missing right bracket ')' in expression.:
    If (StringInStr($aRecords[$x], "keine Verbindung") Then
    If ^ ERROR

    • Offizieller Beitrag

    Hi,

    ich habe nochmal eine andere Lösung ohne temp-Datei ausprobiert.

    Kannst du ja mal testen:

    [autoit]

    #include <file.au3>
    #include <Constants.au3>
    Global $text
    Global $command = "ipconfig /all"

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

    $stream = Run(@comspec & ' /c ' & $command,'',@SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

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

    While 1
    $textline = StdoutRead($stream)
    $text = $text & @CRLF & $textline
    If @error Then ExitLoop
    Wend

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

    ; oder was du sonst machen willst
    If StringInStr($text, "keine Verbindung") <> 0 Then MsgBox(64, "Info", "Hallo erst verbinden, dann zocken! tze tze tze")

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

    ; den Ip-Config / all Inhalt angucken
    ;MsgBox(0, "STDOUT read:", $text)

    [/autoit]

    So long,

    Mega