urlaubs fotos sortieren

  • Hallo
    ich hab mal ne Frage ob das geht und wenn ja wie:
    also ich habe eine "best of" Auswahl von Fotos in unbekannten Unterordnern von einem bekannten Ordner. Diese sind in einer stark verkleinerten Auflösung und haben ein v vor dem eigentlichen Dateinamen des Fotos. Nun will ich die Fotos in originaler Auflösung (in unbekannten Unterordnern eines anderen bekannten Ordner) raussuchen lassen und an eine dritte Stelle kopieren.

    ich hatte mir das so vorgestellt.

    Dateinamen in Variablen schreiben das v entfernen. Den Namen im anderen Ordner suchen und es dann an eine dritte Stelle zu kopieren. Dort soll dann die Datei in einem Ordner abgelegt werden der genauso heißt wie der aus den sie stammt.

    geht das mit auto it?
    und wenn ja
    wie bewerkstelligt man das?
    LG Be_Happy

  • Guten Tag,

    Die Dateinamen kann man "_FileListToArrayRec" zu einem Array zusammenfassen. (Schaue dazu in die Hilfe)
    Dann durchsucht man das Array nach der jeweiligen Bezeichnung mit "_ArraySearch" (ebenfalls in Hilfe schauen).
    Wenn man den Filenamen hat (durch _ArraySearch), dann ersetzt man das v durch "StringReplace" mit "",
    anschließend kopiert / verschiebt man das File mit FileCopy / FileMove in den 3. Ordner.

    Hoffe ich konnte dir Anstöße geben, aber Programmieren muss man selber :p

    Gruß
    Qu1cks3r

    ~~MBI~~

    _______________________________

    everything is possible with AutoIT

    ___________________________

  • also ich hab mal angefangen und weis jetzt nicht wie ich die dateinamen in dem 2. Ordner suchen kann.

    Spoiler anzeigen
  • So kann man es machen:

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <Array.au3>
    #include <MsgBoxConstants.au3>

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

    Global $ursprungspfad
    Global $ordneranzahl
    Global $dateizahl

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

    $run = 0
    $ursprungspfad = "C:\Users\Marv\Dropbox\Hompage"
    $zielpfad = ""

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

    $files=_searchFiles($ursprungspfad)
    local $filesCopy[UBound($files)][2]
    local $count=0
    for $i=0 to UBound($files)-1 step 1
    $ar=StringSplit($files[$i],"\")
    if StringInStr($ar[$ar[0]],"v")=1 then
    $name=""
    ;von hier
    for $l=1 to UBound($ar)-2 step 1
    $name&=$ar[$l]&"\"
    next
    ;bis hier weglassen, damit alle in einen Ordner kopiert werden (ohne unterordner)
    $name&=StringRight($ar[$ar[0]],StringLen($ar[$ar[0]])-1)
    $filesCopy[$count][0]=$files[$i]
    $filesCopy[$count][1]=StringReplace($name,$ursprungspfad,"");ebenso das hier mit $filesCopy[$count][1]=$name ersetzen (schneller)
    $count+=1
    endif
    next
    ReDim $filesCopy[$count]
    for $f=0 to UBound($filesCopy)-1 step 1
    FileCopy($filesCopy[$f][0],$zielpfad&$filesCopy[$f][1],1+8)
    next

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

    Func _searchFiles($folder)
    local $array[10],$count=0
    $search=FileFindFirstFile($folder&"\"&"*.*")
    while NOT @error
    $name=FileFindNextFile($search)
    if @error then
    ExitLoop
    elseif @extended then
    $ordneranzahl+=1
    $ar=_searchFiles($folder&"\"&$name)
    ReDim $array[UBound($array)+UBound($ar)+1]
    for $i=0 to UBound($ar)-1 step 1
    $array[$count]=$ar[$i]
    $count+=1
    next
    else
    $dateizahl+=1
    $array[$count]=$folder&"\"&$name
    $count+=1
    if $count=UBound($array) then
    ReDim $array[UBound($array)+10]
    endif
    endif
    WEnd
    ReDim $array[$count]
    return $array
    EndFunc

    [/autoit]

    Ich hoffe, das funktioniert bei dir :)

  • so ich hab mal an meinem "ding" was weiter geschrieben und hab noch ein kleines Problem und zwar gibt er mir nen Fehler aus nachdem der erste ordner mit niedriger auflösung abgearbeitet wurde.

    Spoiler anzeigen

    >"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Users\Marv\Desktop\Programmieren\Minecraft Server\Fotos sucher V2.au3"
    "C:\Users\Marv\Desktop\Programmieren\Minecraft Server\Fotos sucher V2.au3" (149) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    If $zieldateiname[$zielzahl] = $dateinamen[$dateizahl] Then
    If ^ ERROR
    >Exit code: 1 Time: 14.02

    kommt dann immer ich hoffe ihr könnt mir weiterhelfen weil ich find den punkt einfach nicht wo $zielzahl einen incorrekten wert haben könnte.
    LG BE__Happy