Datei Kopieren und Inhalt der datei ändern

  • Hey,
    ich möchte gerne eine datei kopieren und anschliessend einen text inhalt verändern.

    So sieht mein Jetziger Code aus aber irgendwie scheitert es schon beim Fileopen:
    Das Kopieren Klappt.

    [autoit]

    FileCopy(@ScriptDir & '\test\Template.tip', @ScriptDir & '\tip\' & $filename & '.tip', 1)
    $file = FileOpen(@ScriptDir & '\test\' & $filename & '.tip', 2)
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf

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

    FileClose($file)

    [/autoit]

    Ich möchte in der Datei das:
    \\server\share\test

    gegen das in der datei austauschen:
    \\server\app\test

    Würde mich über jede hilfe freuen
    Gruss
    SubZero

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • [autoit]

    FileCopy(@ScriptDir & '\test\Template.tip', @ScriptDir & '\tip\' & $filename & '.tip', 1)
    $file = FileOpen(@ScriptDir & '\test\' & $filename & '.tip', 2)
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    $sFileRead = FileRead(@ScriptDir & '\test\' & $filename & '.tip')
    $sReplace = StringReplace($sFileRead, "\\server\share\test", "\\server\app\test")
    FileWrite(@ScriptDir & '\test\' & $filename & '.tip', $sReplace)

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

    FileClose($file)

    [/autoit]


    Ich weiß nicht ob es klappt.

  • Leider klappt es nicht ?(

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Ich würde sagen da stimmt was beim Filecopy nicht. Schau dir den Befehl nochmal genau in der Hilfe an.
    So aus dem Kopf: 1 Para. -> der ganze Pfad zur Datei | 2 Para. -> Der Zielordner

  • das habe ich doch so gemacht ? oder habe ich ein verständnis fehler??

    [autoit]

    FileCopy(@ScriptDir & '\test\Template.tip', @ScriptDir & '\tip\' & $filename & '.tip', 1)

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Meine ich doch ;)
    ich dachte mitlerweile müsste ich ja wenigstens kopieren Können ;)

    Hat jemand einen Lösungsvorschlag??

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Also bei dem script von understood ist das Problem das die Variable filename nicht deklariet ist. Wennd diese Deklariet ist gehtn es auch.

  • Leider funktioniert das nicht ;(

    Hier mein Code kannst dich selbst überzeugen ;)


    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <Array.au3>

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

    $gui = GUICreate('test', 600, 650, -1, -1)
    $LV = GUICtrlCreateListView('Images', 20, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)
    $hLV = GUICtrlGetHandle($LV)
    $LVio = GUICtrlCreateListView('Erfolgreich', 180, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $LVnio = GUICtrlCreateListView('Fehlerhaft', 370, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $button = GUICtrlCreateButton('Zeige Image Pfad', 20, 580, 100, 20)
    $Imagecheck = GUICtrlCreateButton('Image Prüfen', 20, 600, 100, 20)
    $Imagecheckall = GUICtrlCreateButton('Alle Images Prüfen', 20, 620, 100, 20)
    GUISetState(@SW_SHOW)

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

    GLobal $path = 'D:\acronis'
    Local $aFiles = _GetFilesFolder_Rekursiv($path, 'tib', 0) ; Ausgabe in Array, nur Dateien
    If Not IsArray($aFiles) Then Exit MsgBox(0, 'Fehler', 'Keine "tib"-Files vorhanden.')
    _ArrayDelete($aFiles, 0) ; Zähler löschen für Indexübereinstimmung mit LV

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

    ; Dateinamen in LV eintragen
    Local $FileName
    For $i = 0 To UBound($aFiles) -1
    $FileName = StringRegExpReplace($aFiles[$i], '.*\\(.+)\..*', '$1')
    _GUICtrlListView_AddItem($hLV, $FileName)

    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button
    ; beim Auslesen des markierten LV-Eintrages
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    ; den zugehörigen Dateipfad kannst du jetzt direkt aus dem Array auslesen
    Local $currFilePath = $aFiles[$index]
    MsgBox(0, '', $filename)

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

    MsgBox(0, '', $aFiles[$index])


    case $Imagecheck
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    Local $currFilePath = $aFiles[$index]

    FileCopy(@ScriptDir & '\tis\Template.tis', @ScriptDir & '\tis\' & $filename & '.tis', 1)
    $file = FileOpen(@ScriptDir & '\tis\' & $filename & '.tis', 2)
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    $sFileRead = FileRead(@ScriptDir & '\tis\' & $filename & '.tis')
    $sReplace = StringReplace($sFileRead, "\\server\share\test", "\\server\app\test")
    FileWrite(@ScriptDir & '\tis\' & $filename & '.tis', $sReplace)

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

    FileClose($file)

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

    EndSwitch

    WEnd

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

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard); 1 -@CR; 2 -@LF; oder beliebiges Zeichen
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '0'
    $sDelim = @CR
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles,1), $sDelim)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles,1)
    EndIf
    EndFunc

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

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc

    [/autoit]

    Gruß
    SubZero

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • [autoit]

    $filename = "Hallo"

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

    FileCopy(@ScriptDir & '\tis\test.tis', @ScriptDir & '\tis\' & $filename & '.tis', 1)
    $file = FileOpen(@ScriptDir & '\tis\' & $filename & '.tis', 2)
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    $sFileRead = FileRead(@ScriptDir & '\tis\' & $filename & '.tis')

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

    FileWrite(@ScriptDir & '\tis\' & $filename & '.tis', "Geht doch!")

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

    FileClose($file)

    [/autoit]

    Funktioniert doch! Ich würde den Fehler also bei der Variablen $filename suchen.

  • Also Kopieren tut er richtig $filname nimmst er auch namen für die datei, also müsste doch dann $filename stimmen oder?
    Der rest geht nicht hier mein ganzer code kann leider den fehler nicht finden kann mich jemand unterstützen
    Danke.

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <Array.au3>

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

    $gui = GUICreate('test', 600, 650, -1, -1)
    $LV = GUICtrlCreateListView('Images', 20, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)
    $hLV = GUICtrlGetHandle($LV)
    $LVio = GUICtrlCreateListView('Erfolgreich', 180, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $LVnio = GUICtrlCreateListView('Fehlerhaft', 370, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $button = GUICtrlCreateButton('Zeige Image Pfad', 20, 580, 100, 20)
    $Imagecheck = GUICtrlCreateButton('Image Prüfen', 20, 600, 100, 20)
    $Imagecheckall = GUICtrlCreateButton('Alle Images Prüfen', 20, 620, 100, 20)
    GUISetState(@SW_SHOW)

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

    GLobal $path = 'c:\'
    Local $aFiles = _GetFilesFolder_Rekursiv($path, 'tib', 0) ; Ausgabe in Array, nur Dateien
    If Not IsArray($aFiles) Then Exit MsgBox(0, 'Fehler', 'Keine "tib"-Files vorhanden.')
    _ArrayDelete($aFiles, 0) ; Zähler löschen für Indexübereinstimmung mit LV

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

    ; Dateinamen in LV eintragen
    Local $FileName
    For $i = 0 To UBound($aFiles) -1
    $FileName = StringRegExpReplace($aFiles[$i], '.*\\(.+)\..*', '$1')
    _GUICtrlListView_AddItem($hLV, $FileName)

    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button
    ; beim Auslesen des markierten LV-Eintrages
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    ; den zugehörigen Dateipfad kannst du jetzt direkt aus dem Array auslesen
    Local $currFilePath = $aFiles[$index]
    MsgBox(0, '', $filename)

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

    MsgBox(0, '', $aFiles[$index])


    case $Imagecheck
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    Local $currFilePath = $aFiles[$index]

    FileCopy(@ScriptDir & '\tis\Template.tis', @ScriptDir & '\tis\' & $filename & '.tis', 1)
    $file = FileOpen(@ScriptDir & '\tis\' & $filename & '.tis', 2)
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    $sFileRead = FileRead(@ScriptDir & '\tis\' & $filename & '.tis')
    $sReplace = StringReplace($sFileRead, "\\server\share\test", "\\server\app\test")
    FileWrite(@ScriptDir & '\tis\' & $filename & '.tis', $sReplace)

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

    FileClose($file)

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

    EndSwitch

    WEnd

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

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard); 1 -@CR; 2 -@LF; oder beliebiges Zeichen
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '0'
    $sDelim = @CR
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles,1), $sDelim)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles,1)
    EndIf
    EndFunc

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

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hey,
    da war tatsächlich ein fehler in $filename aber trotzdem funktioniert es nicht,
    Filecopy funktioniert,
    aber das war es dann auch !!!??
    bin davon überzeugt das ich hier noch ein fehler habe??

    [autoit]

    case $Imagecheck
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    Local $currFilePath = $aFiles[$index]
    $FileNameimage = StringRegExpReplace($aFiles[$index], '.*\\(.+)\..*', '$1')
    FileCopy(@ScriptDir & '\tis\Template.tis', @ScriptDir & '\tis\' & $FileNameimage & '.tis', 1)
    $file = FileOpen(@ScriptDir & '\tis\' & $FileNameimage & '.tis', 2)
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    $sFileRead = FileRead(@ScriptDir & '\tis\' & $FileNameimage & '.tis')
    $sReplace = StringReplace($sFileRead, "\\server\share\test", "\\server\app\test")
    ;FileWrite(@ScriptDir & '\tis\' & $filename & '.tis', $sReplace)

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

    FileClose($file)

    [/autoit]


    Hier mein ganzer Code:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <Array.au3>

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

    $gui = GUICreate('test', 600, 650, -1, -1)
    $LV = GUICtrlCreateListView('Images', 20, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)
    $hLV = GUICtrlGetHandle($LV)
    $LVio = GUICtrlCreateListView('Erfolgreich', 180, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $LVnio = GUICtrlCreateListView('Fehlerhaft', 370, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $button = GUICtrlCreateButton('Zeige Image Pfad', 20, 580, 100, 20)
    $Imagecheck = GUICtrlCreateButton('Image Prüfen', 20, 600, 100, 20)
    $Imagecheckall = GUICtrlCreateButton('Alle Images Prüfen', 20, 620, 100, 20)
    GUISetState(@SW_SHOW)

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

    GLobal $path = 'd:\'
    Local $aFiles = _GetFilesFolder_Rekursiv($path, 'tib', 0) ; Ausgabe in Array, nur Dateien
    If Not IsArray($aFiles) Then Exit MsgBox(0, 'Fehler', 'Keine "tib"-Files vorhanden.')
    _ArrayDelete($aFiles, 0) ; Zähler löschen für Indexübereinstimmung mit LV

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

    ; Dateinamen in LV eintragen
    Local $FileName
    For $i = 0 To UBound($aFiles) -1
    $FileName = StringRegExpReplace($aFiles[$i], '.*\\(.+)\..*', '$1')
    _GUICtrlListView_AddItem($hLV, $FileName)

    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button
    ; beim Auslesen des markierten LV-Eintrages
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    ; den zugehörigen Dateipfad kannst du jetzt direkt aus dem Array auslesen
    Local $currFilePath = $aFiles[$index]
    MsgBox(0, ' $aFiles[$index]', $aFiles[$index])

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

    MsgBox(0, '$aFiles[$index]', $aFiles[$index])


    case $Imagecheck
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    Local $currFilePath = $aFiles[$index]
    $FileNameimage = StringRegExpReplace($aFiles[$index], '.*\\(.+)\..*', '$1')
    FileCopy(@ScriptDir & '\tis\Template.tis', @ScriptDir & '\tis\' & $FileNameimage & '.tis', 1)
    $file = FileOpen(@ScriptDir & '\tis\' & $FileNameimage & '.tis', 2)
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    $sFileRead = FileRead(@ScriptDir & '\tis\' & $FileNameimage & '.tis')
    $sReplace = StringReplace($sFileRead, "\\server\share\test", "\\server\app\test")
    ;FileWrite(@ScriptDir & '\tis\' & $filename & '.tis', $sReplace)

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

    FileClose($file)

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

    EndSwitch

    WEnd

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

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard); 1 -@CR; 2 -@LF; oder beliebiges Zeichen
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '0'
    $sDelim = @CR
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles,1), $sDelim)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles,1)
    EndIf
    EndFunc

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

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Nur noch was kleines bau mal in deine switch ein das wenn man auf exit klickt das es sich dann schließt

  • Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <Array.au3>

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

    $gui = GUICreate('test', 600, 650, -1, -1)
    $LV = GUICtrlCreateListView('Images', 20, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)
    $hLV = GUICtrlGetHandle($LV)
    $LVio = GUICtrlCreateListView('Erfolgreich', 180, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $LVnio = GUICtrlCreateListView('Fehlerhaft', 370, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $button = GUICtrlCreateButton('Zeige Image Pfad', 20, 580, 100, 20)
    $Imagecheck = GUICtrlCreateButton('Image Prüfen', 20, 600, 100, 20)
    $Imagecheckall = GUICtrlCreateButton('Alle Images Prüfen', 20, 620, 100, 20)
    GUISetState(@SW_SHOW)

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

    Global $path = @ScriptDir
    Local $aFiles = _GetFilesFolder_Rekursiv($path, 'tis', 0) ; Ausgabe in Array, nur Dateien
    If Not IsArray($aFiles) Then Exit MsgBox(0, 'Fehler', 'Keine "tib"-Files vorhanden.')
    _ArrayDelete($aFiles, 0) ; Zähler löschen für Indexübereinstimmung mit LV

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

    ; Dateinamen in LV eintragen
    Local $FileName
    For $i = 0 To UBound($aFiles) - 1
    $FileName = StringRegExpReplace($aFiles[$i], '.*\\(.+)\..*', '$1')
    _GUICtrlListView_AddItem($hLV, $FileName)

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

    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button ;zeige Pfad an
    ; beim Auslesen des markierten LV-Eintrages
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    ; den zugehörigen Dateipfad kannst du jetzt direkt aus dem Array auslesen
    Local $currFilePath = $aFiles[$index]
    MsgBox(0, ' $aFiles[$index]', $aFiles[$index])

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

    Case $Imagecheck
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    Local $currFilePath = $aFiles[$index]
    $FileNameimage = StringRegExpReplace($aFiles[$index], '.*\\(.+)\..*', '$1')
    FileCopy(@ScriptDir & '\tis\Template.tis', @ScriptDir & '\tis\' & $FileNameimage & '.tis', 1)
    $fopenread = FileOpen(@ScriptDir & '\tis\' & $FileNameimage & '.tis', 0)
    If $fopenread = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    $sFileRead = FileRead($fopenread)
    MsgBox(1, "", $sFileRead)
    $sReplace = StringReplace($sFileRead, "\\server\share\test", "\\server\app\test")
    FileClose($fopenread)
    $fopenwrite = FileOpen(@ScriptDir & '\tis\' & $FileNameimage & '.tis', 2)
    If $fopenwrite = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    FileWrite($fopenwrite, $sReplace)
    FileClose($fopenwrite)

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

    EndSwitch

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

    WEnd

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

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard); 1 -@CR; 2 -@LF; oder beliebiges Zeichen
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt = '*', $iDir = -1, $iRetType = 0, $sDelim = '0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '0'
    $sDelim = @CR
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath), $sExt, $iDir, $sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles, 1), $sDelim)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles, 1)
    EndIf
    EndFunc ;==>_GetFilesFolder_Rekursiv

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

    Func _ShowSubFolders($Folder, $Ext = '*', $Dir = -1, $Delim = @CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc ;==>_ShowSubFolders

    [/autoit]

    So? Man muss scheinbar zum lesen/schreiben die Datei auch im entsprechenden Modus öffnen. Wirklich toll find ich das jetzt auch noch nicht, sollte aber vorerst mal funktionieren!

    edit \ Naja was heisst "scheinbar" :D - steht ja ganz dick an erster Stelle in der Hilfe 8o
    Obs ohne 2 Zugriffe auf die Datei geht weiss ich nicht.

    Einmal editiert, zuletzt von nuts (11. Juli 2009 um 14:02)