könnte mir einer ein codensnippet geben das von einer *.txt datei jede zeile ausliest (es sind urls) die ich dann automatisch besuchen lassen kann?
geht das auch das ich identische zeilen löschen lassen kann?
könnte mir einer ein codensnippet geben das von einer *.txt datei jede zeile ausliest (es sind urls) die ich dann automatisch besuchen lassen kann?
geht das auch das ich identische zeilen löschen lassen kann?
#include <IE.au3>
#include <file.au3>
If FileExists(@ScriptDIR&"\urls.txt") Then
Dim $inhalt
If Not _FileReadToArray(@ScriptDir&"\urls.txt",$inhalt) Then
MsgBox(4096,"Error", "Es ist ein Fehler aufgetreten!"&@CR&"Bitte kontaktieren Sie den Author.")
Exit
EndIf
$fo_urls = FileOpen(@ScriptDir&"\urls.txt",2)
For $i = 1 to $inhalt[0]
If $inhalt[$i] = "" Then
;Eintrag in zeile leer
Else
_IECreate($inhalt[$i])
EndIf
Next
EndIf
zurzeit wird noch für jeden eintrag der in der txt vorhanden ist ein neues fenster erstellt mit der url die in der txt steht aber hab das noch nicht wirklich zum funktionieren bekommen dass er vorher noch prüft ob der eintrag schon vorhanden ist...
achja die txt datei liegt laut scrip nätürlich im gleichen verzeichnis wie das script und heißt urls.txt(sehr kreativ^^)
ok danke, hab das jetzt soweit, jetzt bräucht ich nur noch ein "tool" das mir die doppelten zeilen erkennt und automatisch löscht :musik1:
Hi,
versuch mal :
[autoit]#include <file.au3>
#include <Array.au3>
Dim $aLines
If Not _FileReadToArray("duplicate.txt", $aLines) Then
MsgBox(4096, "Error", " Error reading log to Array error:" & @error)
Exit
EndIf
Global $array = RemoveDuplicates($aLines)
_ArrayDisplay($array, "Removed Duplicates")
Func RemoveDuplicates($avData)
Local $avData2 = $avData
Local $iCount = 0
For $i = 0 To UBound($avData) - 1
$iCount = 0
For $ii = 0 To UBound($avData) - 1
If $ii > UBound($avData2) - 1 Then ExitLoop
If $avData2[$ii] = $avData[$i] Then
If $iCount > 0 Then
_ArrayDelete($avData2, $ii)
_ArrayDelete($avData2, $i)
EndIf
$iCount += 1
EndIf
Next
Next
$avData2[0] = UBound($avData2)
Return $avData2
EndFunc ;==>RemoveDuplicates
So long,
Mega
ZitatAlles anzeigenOriginal von th.meger
Hi,versuch mal :
Spoiler anzeigen
[autoit]#include <file.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
Dim $aLinesIf Not _FileReadToArray("duplicate.txt", $aLines) Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(4096, "Error", " Error reading log to Array error:" & @error)
Exit
EndIfGlobal $array = RemoveDuplicates($aLines)
[/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($array, "Removed Duplicates")Func RemoveDuplicates($avData)
[/autoit]
Local $avData2 = $avData
Local $iCount = 0
For $i = 0 To UBound($avData) - 1
$iCount = 0
For $ii = 0 To UBound($avData) - 1
If $ii > UBound($avData2) - 1 Then ExitLoop
If $avData2[$ii] = $avData[$i] Then
If $iCount > 0 Then
_ArrayDelete($avData2, $ii)
_ArrayDelete($avData2, $i)
EndIf
$iCount += 1
EndIf
Next
Next
$avData2[0] = UBound($avData2)
Return $avData2
EndFunc ;==>RemoveDuplicatesSo long,
Mega
@edit vom zitat einfach spoiler hinzugefügt...
hey ho mega hab grad deine funktion getest.ich denke das funktioniert nicht ganz, da wenn ein eintrag doppelt vorkommt, werden ->beide<- einträge gelöscht...ich denke mal das ist nicht erwünscht(weiß ich aber auch nicht^^)...deswegen zeile 23 auskommentieren..dann wird nur einer der beiden doppelt vorkommenden einträge gelöscht...des ganze dann noch mit IE öffnen(mit der schleife von mir wär das eine möglichkeit) aber sonst funktioniert die funktion (getestet)
:keks: an mega ders gelößt hat hihi
@edit2 satzzeichen hinzugefügt^^ damit halbwegslesbar mit kater
ah super
ich bekomms jetzt bloß nicht in eine datei geschrieben
edit: snoozer, ööh es sind aber auch welche dreifach und mehr, geht das trotzdem?
Hi,
ja geht trotzdem.
Du bekommst ein array zurück, also guck dir mal _FileWriteFromArray an.
So long,
Mega
ah fein, ich liebe euch :kiss:
Soweit wollte ich eigentlich nicht gehen, aber schön wenn es funktioniert. :musik2:
So long,
Mega
bei 150kb textdatei dauert das bald 10 minuten, kann man das nicht irgendwie optimieren? ich hab nen pentium d 3ghz
Hi,
das kann nicht sein. Zeig mal deinen Code.
So long,
Mega
#include <file.au3>
#include <Array.au3>
Dim $aLines
[/autoit][autoit][/autoit][autoit]If Not _FileReadToArray ("url.txt", $aLines) Then
MsgBox(4096, "Error", " Error reading log to Array error:" & @error)
Exit
EndIf
Global $array = RemoveDuplicates ($aLines)
[/autoit][autoit][/autoit][autoit]_FileWriteFromArray ("output.txt", $array)
Func RemoveDuplicates($avData)
Local $avData2 = $avData
Local $iCount = 0
For $i = 0 To UBound($avData) - 1
$iCount = 0
For $ii = 0 To UBound($avData) - 1
If $ii > UBound($avData2) - 1 Then ExitLoop
If $avData2[$ii] = $avData[$i] Then
If $iCount > 0 Then
_ArrayDelete($avData2, $ii)
;_ArrayDelete($avData2, $i)
EndIf
$iCount += 1
EndIf
Next
Next
$avData2[0] = UBound($avData2)
Return $avData2
EndFunc ;==>RemoveDuplicates
;########
[/autoit][autoit][/autoit][autoit]; _FileCountLines("output.txt")
[/autoit]Hallo!
probier mal das:
#include <file.au3>
#include <Array.au3>
Dim $aLines
[/autoit] [autoit][/autoit] [autoit]If Not _FileReadToArray("url.txt", $aLines) Then
MsgBox(4096, "Error", " Error reading log to Array error:" & @error)
Exit
EndIf
$array = _ArrayDelDup($aLines, 1)
[/autoit] [autoit][/autoit] [autoit]_FileWriteFromArray("output.txt", $array, 1)
[/autoit] [autoit][/autoit] [autoit];===============================================================================
;
; Function Name: _ArrayDelDup()
; Description: Remove multiple entries.
; Parameter(s): $a_Array - Array
; $i_Base - Start at this Array entry.
; Requirement(s): None
; Return Value(s): On Success - new Array
; On Failure - "" and sets @ERROR = 1
;
;===============================================================================
Func _ArrayDelDup($a_Array, $i_Base = 0)
Local $i_Count, $i_MaxCount
If Not IsArray($a_Array) Then
SetError(1)
Return ""
EndIf
Dim $a_newArray[2]
$a_newArray[1] = $a_Array[$i_Base]
For $i = $i_Base + 1 To UBound($a_Array) - $i_Base - 1
If _ArraySearch($a_newArray, $a_Array[$i]) = -1 Then
_ArrayAdd($a_newArray, $a_Array[$i])
EndIf
Next
$a_newArray[0] = UBound($a_newArray) - 1
Return $a_newArray
EndFunc ;==>_ArrayDelDup
genauso langsam wie vorher :weinen:
ich benutz aber das jetzt erstmal
naja muss ich halt warten... ich test es nachher mal auf nem anderen rechner
Vllt. gehts so schneller, allerdings werden die Url's jetzt sortiert aber das dürfte ja nichts machen:
#include <file.au3>
#include <Array.au3>
Dim $aLines
[/autoit] [autoit][/autoit] [autoit]If Not _FileReadToArray("url.txt", $aLines) Then
MsgBox(4096, "Error", " Error reading log to Array error:" & @error)
Exit
EndIf
$array = _ArrayDelDup($aLines, 1)
[/autoit] [autoit][/autoit] [autoit]_FileWriteFromArray("output.txt", $array, 1)
[/autoit] [autoit][/autoit] [autoit];===============================================================================
;
; Function Name: _ArrayDelDup()
; Description: Remove multiple entries.
; Parameter(s): $a_Array - Array
; $i_Base - Start sorting at this Array entry.
; Requirement(s): None
; Return Value(s): On Success - new Array
; On Failure - "" and sets @ERROR = 1
;
;===============================================================================
Func _ArrayDelDup($a_Array, $i_Base = 0)
Local $i_Count, $i_MaxCount
If Not IsArray($a_Array) Then
SetError(1)
Return ""
EndIf
_ArraySort($a_Array,0,$i_Base)
Dim $a_newArray[2]
$a_newArray[1] = $a_Array[$i_Base]
For $i = $i_Base + 1 To UBound($a_Array) - $i_Base - 1
If $a_Array[$i -1] <> $a_Array[$i] Then
_ArrayAdd($a_newArray, $a_Array[$i])
EndIf
Next
$a_newArray[0] = UBound($a_newArray) - 1
Return $a_newArray
EndFunc ;==>_ArrayDelDup
Wenn's jetzt immer noch genau so langsam ist liegt's wohl eher an _FileReadToArray und _FileWriteFromArray!