Hallo. Ich habe ein Array in meinem Skript, in dem viele PC-Namen stehen. Ein fester Pfad mit einer Datei drin, deren name des PC-Namen entspricht, soll verarbeitet werden. N
Nun möchte ich in einer einfachen for-Schleife den Dateinamen in dem Pfad immer ändern, sodass je Schleifendurchgang immer die nächste Datei abgearbeitet wird. Aber das geschieht nicht. Eigentlich ist das ganz einfach, aber das Skript arbeitet immer bloß einen Namen ab.
Siehe auch nochmal mein Kommentar ziemlich weit oben im Skript
Spoiler anzeigen
#include <array.au3>
#Include <File.au3>
#Include <Date.au3>
dim $druckeruebersicht[2][2]
Local $var
yfnrpc()
;~ dim $yfnrpc[1] = ["yf7sltpy"]
_arraydisplay($yfnrpc)
[/autoit] [autoit][/autoit] [autoit]for $i = 0 to UBound($yfnrpc) - 1
$einzulesende_csv = @ScriptDir & "\" & $yfnrpc[$i] & ".csv"
if FileExists($einzulesende_csv) = 1 Then ;Hier ist das Problem begraben. Ich habe bisher nur eine Testdatei in dem Verzeichnis. Bei jedem Durchgang wird wieder diese Testdatei herangezogen, weil FileExists() jede Datei aus dem Array angeblich findet...
Global $aCSV
global $trennzeichen = ","
Dim $array_komplett[1][1]
_filereadtoarray($einzulesende_csv, $aCSV)
[/autoit] [autoit][/autoit] [autoit]for $i = 3 to ubound($aCSV) - 1
Dim $aNeuesArray[1]
Local $spalte = $aCSV[$i]
while 1
$erstestrennzeichen = StringInStr($spalte, $trennzeichen) ;Sucht nach der Stelle des nächsten Trennzeichens
if $erstestrennzeichen Then ;Wenn eins gefunden wurde, dann...
$aNeuesArray[ubound($aNeuesArray) - 1] = StringLeft($spalte, $erstestrennzeichen - 1) ;wird ein neuer String in das temporäre Array geschrieben. Der String beinhaltet den Inhalt des Strings von dem "großen Array" von der ersten Position bis zu der Position wo das erste Trennzeichen gefunden, minus damit das Trennzeichen selber in das neue Array nicht mit geschrieben wird.
redim $aNeuesArray[ubound($aNeuesArray) + 1] ;Für den nächsten Inhalt wird eine weitere Zeile dem Array hinzugefügt
$spalte = StringTrimLeft($spalte, $erstestrennzeichen) ;Für den nöchsten Durchlauf wird der String bis zum ersten Trennzeichen gekürzt
Else
_arraydelete($aNeuesArray, ubound($aNeuesArray)) ;Löscht die letzte Zeile des Arrays, die in jedem Durchgang zu viel geschrieben wird
if ubound($aNeuesArray) > ubound($array_komplett, 2) Then ;Die Anzahl der Spalten in $array_komplett ist abhängig von der Anzahl der Zeilen in $aNeuesArray.
redim $array_komplett[ubound($array_komplett) + 1][ubound($aNeuesArray)] ;Wenn in $aNeuesArray mehr Zeilen als Spalten in $array_komplett vorhanden sind, so wird die Anzahl der Spalten angepasst.
Else
redim $array_komplett[ubound($array_komplett) + 1][ubound($array_komplett, 2)] ;Ansonsten bleibt die Spaltenanzahl gleich, und es wird nur eine neue Zeile angehängt.
EndIf
for $a = 0 to ubound($aNeuesArray) - 1 ;Hier werden die Inhalte aus den Zeilen von $aNeuesArray in die Spalten von $array_komplett aufgeteilt
$array_komplett[ubound($array_komplett) - 1][$a] = $aNeuesArray[$a]
Next
ExitLoop
EndIf
WEnd
Next
;Col 1 = User
;Col 4 = Drucker
for $b = 1 to ubound($array_komplett) - 1
;~ $druckeruebersicht[ubound($druckeruebersicht) - 1][0] = $yfnrpc[$i]
;~ $druckeruebersicht[ubound($druckeruebersicht) - 1][1] = $array_komplett[$b][1]
;~ for $e = 0 to ubound($druckeruebersicht, 2) - 1
;~ MsgBox(1, "lala", "Schleife 2")
;~ if stringinstr($druckeruebersicht[ubound($druckeruebersicht) - 1][$e], $array_komplett[$b][4]) Then
;~ $var = 1
;~ EndIf
;~ Next
;~ if $var < 1 Then
;~
;~ ReDim $druckeruebersicht[ubound($druckeruebersicht)][ubound($druckeruebersicht, 2) + 1]
;~ $druckeruebersicht[ubound($druckeruebersicht) - 1][ubound($druckeruebersicht, 2) - 1] = $array_komplett[$b][4]
;~ EndIf
;~
;~
;~ if $array_komplett[$b][4] <> $druckeruebersicht[ubound($druckeruebersicht) - 1][$e] Then
;~ MsgBox(1, "lala", $array_komplett[$b][4])
;~ MsgBox(1, "lala", $druckeruebersicht[ubound($druckeruebersicht) - 1][$e])
;~ EndIf
;~ _arraydisplay($druckeruebersicht)
Next
EndIf
Next
func yfnrpc() ; erstellt ein array "yfnrpc[]" mit allen yf-nr der rechner
; es wird auf dem tja nach missing_patches_neu* logdateien gesucht. logdatei = pc = yfnr
Global $yfnrpc[1]
Local $search = FileFindFirstFile("\\yf7sltja\log$\missing_patches_neu*") ; suche nach DER ERSTEN missing_patches_neu* datei
Local $count = 0
If $search = -1 Then ; errorhandling
MsgBox(0, "Error", "No files/directories matched the search pattern")
Exit
EndIf
While 1
local $file = FileFindNextFile($search) ; suche die NÄCHSTE missing_patches_neu* datei
If @error Then ExitLoop
local $yfnr = StringRight ( $file, 8 ) ; lese vom dateinamen nur die letzten 8 zeichen
_ArrayAdd($yfnrpc, $yfnr)
$count = $count + 1
WEnd
FileClose($search)
_ArraySwap($yfnrpc[0], $count)
EndFunc