Hallo zusammen,
habe ein kleines Konverterprogramm geschrieben. Das funktioniert auch bis auf eine Kleinigkeit super.
Hier mal ein Auszug aus dem Code:
[autoit]
$array = _GetFilesFolder_Rekursiv($Suchordner, 'ste',0,0)
For $i = 1 To $array[0]
_ArrayDisplay($array, "Test0")
winwait("abc")
; Datei, samt Pfad aus Array auslesen
$sPfad_ste_Datei = $array[$i]
MsgBox(0, "Test1", $sPfad_ste_Datei)
winwait("abc")
; Dateipfad an \ trennen
$arDatei_Name= StringSplit ($sPfad_ste_Datei, "\")
_ArrayDisplay($arDatei_Name, "Test2")
winwait("abc")
; Anzahl der Arrayeinträge abfragen
$Letzter_String = $arDatei_Name[0]
MsgBox(0, "Test3", $Letzter_String)
winwait("abc")
;Dateiname samt Endung aus Array auslesen
$Datei_Name_Endung = $arDatei_Name[($Letzter_String)]
MsgBox(0, "Test4", $Datei_Name_Endung)
winwait("abc")
; "Dateipfad samt Datei und Endung"-String an "Datei mit Endung"-String trennen
$arDatei_Name_2 = StringSplit($sPfad_ste_Datei, $Datei_Name_Endung)
MsgBox(0, "Test5", $sPfad_ste_Datei)
winwait("abc")
_ArrayDisplay($arDatei_Name_2, "Test6")
winwait("abc")
; Dateipfad aus Array auslesen
$Datei_Pfad = $arDatei_Name_2[1]
MsgBox(0, "Test7", $Datei_Pfad)
winwait("abc")
; "Datei mit Endung"-String an "." trennen
$arDatei_Name_3= StringSplit ($Datei_Name_Endung, ".")
_ArrayDisplay($arDatei_Name_3, "Test8")
winwait("abc")
; Dateiname ohne Endung aus Array auslesen
$Datei_Name = $arDatei_Name_3[1]
FileCopy( $sPfad_ste_Datei, $Datei_Pfad & "\" & $Datei_Name & ".bac")
"Hier kommen einige Mausklicks und Tastatursimulation"
_ArrayEmpty($arDatei_Name_2)
_ArrayDisplay($arDatei_Name_2)
winwait("abc")
Next
Habe mir zum debuggen, ArrayDisplays und MsgBoxes eingebaut. Der Fehler liegt zwischen Test5 und Test6. Im ersten Schleifendurchgang funktioniert alles noch wie es soll. Aber bei den nächsten Durchgängen verhaut er sich irgendwie. Ich bekomme sowohl den $sPfad_ste_Datei als auch $Datei_Name_Endung korrekt angezeigt. Aber irgendwie funktioniert dann mein SplitString nicht mehr korrekt.
BSP:
unter C:\Temp liegt eine .ste Datei. Unter C:\Temp\NeuerOrdner liegt nochmal eine .ste Datei
Ich möchte immer eine Kopie der Orginaldatei als Dateiname.bac im gleiche Verzeichnis wie die Orginaldatei ablegen. Dazu brauche ich den Pfad der Datei. Dieser ist in $Datei_Pfad gespeichert.
Beim ersten Schleifendurchlauf stimmt der Ordner. Beim zweiten durchlauf nimmt er mir wieder den C:\Temp als Ordner obwohl er ja eigentlich C:\Temp\NeuerOrdner nehmen müsste?! Finde einfach den Fehler nicht.
Wäre spitze, wenn mir jemand sagen könnte, was ich falsch mache. Oder wo vielleicht der Denkfehler ist.
Gruß Bad_Rockk