Wenn alles klappt kannst du ja den Threadpräfix auf [gelöst] setzen. Das erledigst du indem du auf 'Bearbeiten' klickst beim 1. Beitrag.
Ich benötige einen Denkanstoss beim kopieren von Dateien
-
Dreamworker -
12. Dezember 2016 um 08:01 -
Erledigt
-
-
Hallo zusammen,
jetzt nach über einem Jahr ist mir ein kleiner Fehler aufgefallen.
Sind die Dateinamen in dieser Form 2017-SUN-10743.nef werden sie gefunden und kopiert, jedoch an einer Kamera kann ich nur maximal 8 Stellen angeben so wie hier _SUN1409.nef
Wie kann ich die Suche verändern , dass beide Arten von Namen gefunden und kopiert werden ?Ich denke diese Zeile muß ich anpassen, habe schon einiges versucht will aber nicht klappen.
$result=StringRegExp($arTmpFiles[$i],"\d*"&$sDelimeter&"(?:.*?)"&$sDelimeter&"(.*?)"&$sDelimeter&"(\d*)"&$sDelimeter,1);Den Namen und den Stern auslesen
Oder liegt es an dieser Zeile :
$arSearch=_findFilesWithString("s:\2017","\d{4}-SUN-(.*nef)")
Ich hoffe Ihr könnt mir helfen. Dankeschön
Hier das ganze Programm:
#include <file.au3>
#include <array.au3> ; wird nur für _Arraydisplay am Ende gebraucht! kann dann eventuell entfernt werden
$file = "C:\Fotoauswahl\test.csv" ; einzulesende csv Datei
$arTmpFiles=FileReadToArray($file);Datei einlesen
$input1 = InputBox ("Model Name","Bitte Modelname eingeben")
$Datum = @YEAR &"-"& @MON &"-"& @MDAY
$Verzeichnis = "\\192.168.178.200\zb-models\" & $Datum &" "& $input1
$Verzeichnis2 = $Verzeichnis & "\" & $Datum &" "& $input1 &" bearbeitet"
;$input1=FileSelectFolder( "Bitte Vereichnis auswählen", "\\192.168.178.200\zb-models")
DirCreate ($Verzeichnis2)local $arFiles[UBound($arTmpFiles)],$count,$sDelimeter=";"
for $i=0 to UBound($arTmpFiles)-1 step 1;Durch alles einträge laufen
$result=StringRegExp($arTmpFiles[$i],"\d*"&$sDelimeter&"(?:.*?)"&$sDelimeter&"(.*?)"&$sDelimeter&"(\d*)"&$sDelimeter,1);Den Namen und den Stern auslesen
;$result=StringRegExp($arTmpFiles[$i],"\d*"&$sDelimeter&"(?:.*?)"&$sDelimeter&"(\d*)"&$sDelimeter,1);Den Namen und den Stern auslesen
if Not @error then;Wenn gefunden
if $result[1]="1" then;Wenn Sterne=1
$arFiles[$count]=$result[0];eintragen
$count+=1;counter ist nur, um am ende die größe festzulegen und nicht funde somit zu filtern
endif
endif
next
ReDim $arFiles[$count]$arSearch=_findFilesWithString("s:\2017","\d{4}-SUN-(.*nef)")
;_ArrayDisplay($arFiles)
;_ArrayDisplay($arSearch)for $i=0 to UBound($arFiles)-1 step 1;arFiles durchlaufen
$index=_ArraySearch($arSearch,$arFiles[$i]&".nef");Nach dem Dateinamen suchen
if $index>-1 then;Wenn gefunden ausgeben
ConsoleWrite($arFiles[$i]&" -> "&$arSearch[$index][0]&@crlf)
FileCopy($arSearch[$index][0],$Verzeichnis&"\"&$arSearch[$index][1]);MsgBox(0,"Ergebnis", $Verzeichnis2 & " Punkte")
endif
next
Func _findFilesWithString($path,$pattern)
;ConsoleWrite("Searching: "&$path&@crlf)
$hSearch=FileFindFirstFile($path&"\*");Suche starten
local $arResult[0][2];Array erstellen
if $hSearch<>-1 then
While 1
$sFileName = FileFindNextFile($hSearch);Datei suchen
If @error Then ExitLoop
if @extended then
$arTmp=_findFilesWithString($path&"\"&$sFileName,$pattern);Unterordner durchsuchen
if UBound($arTmp)>0 then;Bei Fund
ReDim $arResult[UBound($arResult)+UBound($arTmp)][2];Array vergrößern
for $i=0 to UBound($arTmp)-1 step 1;und die Gefudnenen Dateien hinzufügen
$arResult[UBound($arResult)+$i-UBound($arTmp)][0]=$arTmp[$i][0]
$arResult[UBound($arResult)+$i-UBound($arTmp)][1]=$arTmp[$i][1]
next
endif
else
;if StringRegExp($path&"\"&$sFileName,$pattern,0) then;Dafür den gesamten Pfad im RegExp beachten
if StringRegExp($sFileName,$pattern,0) then;Wenn die Datei dem Pattern entspricht
ReDim $arResult[UBound($arResult)+1][2];Array vergrößern
$arResult[UBound($arResult)-1][0]=$path&"\"&$sFileName;Datei reinschreiben
$arResult[UBound($arResult)-1][1]=$sFileName;Datei reinschreiben
endif
endif
WEnd
endif
return $arResultEndFunc
MsgBox( 0, "Dateien kopieren","Kopieren abgeschlossen") -
$arSearch=_findFilesWithString("s:\2017","\d{4}-SUN-(.*nef)")
Hallo Dreamworker es ist die von mir zitierte Zeile die nach Dateien mit Endung *nef sucht.
Du wirst dich auf diesen Teil konzentrieren müssen: "\d{4}-SUN-(.*nef)")
Vielleicht mal "\d{4}-SUN-(.*nef)") durch "_SUN-(.*nef)") ersezten und mal schauen was passiert.
Dies müsste dann nur die Dateien nehmen die anderst (rum) beschriftet sind.Um es den anderen im Forum leichter zu machen verwende bei Code bitte die Code Funktion.
Diese findest du im Editor ganz rechts und sieht so aus: </>
Danach in der Syntax Hervorhebung Autoit anwählenEdit:
Die Dateien sind auch anderst aufgebaut:
2017-SUN-10743.nef
_SUN1409.nefmfg Ru642
-
Hallo @Dreamworker
eigentlich ist so ein strikter Filter doch gar nicht notwendig. Die gefundenen Dateien werden doch eh mit den Dateinamen aus deiner Liste abgeglichen..
Ändere doch einfach die Zeile :zu
-
Hallo zusammen,
ich habe mal versucht, klappt leider nicht.$arSearch=_findFilesWithString("s:\2017",".nef") oder auch $arSearch=_findFilesWithString("s:\2017",".nef") zu nutzen , beides geht nicht.
Das Programm hat ja folgende Funktion, es liest die Bildnamen ein die mit einem Stern gekennzeichnet sind aus der Datei Test.csv.
Danach kopiert er die Dateien . -
Hallo zusammen,
ich habe mal versucht, klappt leider nicht.$arSearch=_findFilesWithString("s:\2017",".nef") oder auch $arSearch=_findFilesWithString("s:\2017",".nef") zu nutzen , beides geht nicht.
Das Programm hat ja folgende Funktion, es liest die Bildnamen ein die mit einem Stern gekennzeichnet sind aus der Datei Test.csv.
Danach kopiert er die Dateien .Mir ist aufgefallen das du in beiden Fällen den * nicht verwendet hast. $arSearch=_findFilesWithString("s:\2017",".*nef") oder auch $arSearch=_findFilesWithString("s:\2017",".*nef")
-