Script Hilfe

  • Hallo,
    Ich möchte mir ein Script erstellen das z.B. bei soeiner Textdatei bzw. Proxy Liste:

    128.193.33.8 3128
    128.223.8.113 3124
    169.229.50.14 3124
    193.136.191.26 3127
    128.238.88.64 3127
    128.31.1.11 3124
    72.36.112.72 3127


    automatisch die Leerzeilen zwischen der Ip und dem Port erkennt, diese wegmacht und durch einen Doppelpunkt ersetzt.

    Doch wie mache ich dies, könnte mir vllt. jemand ein Script dazu erstellen, ich bin damit ehrlich gesagt überfordert :D!

    Danke

    mfg Petry

  • Meinst du die Leerzeilen oder Zeichen?

    Bei den Leerzeichen ist am einfachsten mit StringReplace z.B.:

    [autoit]

    $sIP = "128.193.33.8 3128"
    MsgBox(64,"",StringReplace(StringStripWS($sIP,4)," ",":") )

    [/autoit]

    Das StringStripWS entfernt die evtl doppelten Leerzeichen.

    Grüße
    Stilgar

  • Spoiler anzeigen
    [autoit]

    #include<array.au3>
    #include<File.au3>
    Local $filename ='1.txt';1.txt war meine testfile kannste natürlich anpassen
    Local $meinarray ;die txt wird hierrein gelesen
    Local $nLfd ;hilfsarray
    Local $hFile ;hilfsarray
    $hFile = FileOpen($filename,0)
    _FileReadToArray($filename,$meinarray)
    FileClose($hFile)
    $hFile = FileOpen($filename,2)
    For $nLfd = 1 To $meinarray[0]
    $meinarray[$nLfd] = StringRegExpReplace($meinarray[$nLfd],' ',':');hier wird ersetzt
    If $nLfd <> $meinarray[0] Then $meinarray[$nLfd] &= @CRLF
    FileWrite($hFile,$meinarray[$nLfd]);Und hier schreiben wir den euen inhalt in die datei
    Next
    FileClose($hFile)

    [/autoit]

    er maint leerzeichen

    Und so geht es übrigens habe auch kommentiert vielleicht hilfts ja

  • Danke erstmal, aber Eistee, wo muss ich die Textdatei denn hin kopieren das das Script sie findet?

  • Was warum? Das einzige fachhochdeutsch war StringRexExpReplace :D

    Spoiler anzeigen
    [autoit]

    #region Includes
    #include <File.au3>
    #endregion Includes
    Local $sFilename ='c:\\1.txt';1.txt war meine testfile kannste natürlich anpassen
    Local $aMeinarray ;die txt wird hier rein gelesen
    Local $nLfd
    _FileReadToArray($sFilename,$aMeinarray)
    $hFile = FileOpen($sFilename,2)
    For $nLfd = 1 To $aMeinarray[0]
    FileWrite($hFile, StringReplace($aMeinarray[$nLfd],' ',':') & @CRLF ); hier schreiben wir den Neuen Inhalt in die Datei
    Next
    FileClose($hFile)

    [/autoit]

    Falls da allerdings evtl. mehrere Leerzeichen vorkommen könnten sollte noch das StringStripWS von oben mit rein.

    Grüße
    Stilgar

    3 Mal editiert, zuletzt von Stilgar (23. Juni 2008 um 11:52)

  • Eistee, wo muss ich meine textdatei bei deinem Script hinkopieren das alles klappt? Oder muss ich noch i-was außer den namen der textdatei im Script ändern?

  • Optimierte Version:

    Spoiler anzeigen
    [autoit]

    #region Includes
    #include <File.au3>
    #endregion Includes

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

    Local $sFilename ='c:\\1.txt';1.txt war meine testfile kannste natürlich anpassen
    Local $aMeinarray ;die txt wird hier rein gelesen
    Local $nLfd

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

    _FileReadToArray($sFilename,$aMeinarray)
    For $nLfd = 1 To $aMeinarray[0]
    $aMeinarray[$nLfd] = StringReplace($aMeinarray[$nLfd],' ',':')
    Next
    _FileWriteFromArray($sFilename,$aMeinArray,1)

    [/autoit]

    Nur noch den Dateinamen im Programm ändern.

  • Jetzt weiß ich warum es bei mir nicht geklappt hat, die "Leerzeichen" snd keine leerzeichen sondern Tabs

  • Einfach der Übersicht willen. Vereinfachen läßt sich schließlich fast alles :D

    [autoit]

    #Include <File.au3>
    _ReplaceStringInFile(@ScriptDir & '\ip.txt',@TAB, ':')

    [/autoit]

    Grüße
    Stilgar

    Einmal editiert, zuletzt von Stilgar (23. Juni 2008 um 16:06)

  • Spoiler anzeigen
    [autoit]

    _ReplaceStringInFile(@ScriptDir & '\ip.txt',@TAB, ':')

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

    Func _ReplaceStringInFile($szFileName, $szSearchString, $szReplaceString, $fCaseness = 0, $fOccurance = 1)

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

    Local $iRetVal = 0
    Local $hWriteHandle, $aFileLines, $nCount, $sEndsWith, $hFile
    ; Check if file is readonly ..
    If StringInStr(FileGetAttrib($szFileName), "R") Then Return SetError(6, 0, -1)
    ;===============================================================================
    ;== Read the file into an array
    ;===============================================================================
    $hFile = FileOpen($szFileName, 0)
    If $hFile = -1 Then Return SetError(1, 0, -1)
    Local $s_TotFile = FileRead($hFile, FileGetSize($szFileName))
    If StringRight($s_TotFile, 2) = @CRLF Then
    $sEndsWith = @CRLF
    ElseIf StringRight($s_TotFile, 1) = @CR Then
    $sEndsWith = @CR
    ElseIf StringRight($s_TotFile, 1) = @LF Then
    $sEndsWith = @LF
    Else
    $sEndsWith = ""
    EndIf
    $aFileLines = StringSplit(StringStripCR($s_TotFile), @LF)
    FileClose($hFile)

    [/autoit]


    so gehts auch ohne includes xD