verzeichnisse vergleichen Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

user_effel

verzeichnisse vergleichen

16 Jan 2018, 14:00

hallo ahk gemeinde,
ich habe zwei bilder verzeichnisse, im verzeichnis "start_gross" sind z.b. 100 fotos, im
verzeichnis "start_klein" sind z.b. 50 fotos, welche auch im verzeichnis
"start_gross" enthalten sind.

ziel des scrips soll sein, die übrigen 50 bilderdateien aus dem verzeichnis "start_gross" in das dritte verzeichnis
"ziel_compare" zu kopieren.

ich glaube das ich irgendwie nah dran bin, aber leider funktioniert es nicht.

kann mir vielleicht jemand einen denk anstoss geben?

vielen dank :-)
effel



Code: Select all

#NoEnv
Gui, Add, Button, w200 gstart_gross, Verzeichnis Gross  
Gui, Add, Button, w200 gstart_klein, Verzeichnis Klein 
Gui, Add, Button, w200 gziel_compare, Verzeichnis Ziel
Gui, Add, Button, w200 gstart, Start
Gui, Show, , A_GuiControl
Return
GuiClose:
GuiEscape:
ExitApp

start_gross:
FileSelectFolder, start_gross, , 3, Verzeichnis auswählen
return

start_klein:
FileSelectFolder, start_klein, , 3, Verzeichnis auswählen
return

ziel_compare:
FileSelectFolder, ziel_compare, , 3, Verzeichnis auswählen
filedelete, %ziel_compare%\ergebnis_klein.txt
return

start:
Loop, %start_klein%\*.*, 0, 1
ergebnis_klein .= A_LoopFileName "`n"

Loop, %start_gross%\*.*, 0, 1
{
if ergebnis_klein contains %A_LoopFileName%
return
}
msgbox, %e%-%A_LoopFileName%-%ziel_compare%
; filecopy, A_LoopFileName, %ziel_compare%
return
effel
Posts: 542
Joined: 16 Jan 2018, 13:34

Re: verzeichnisse vergleichen

16 Jan 2018, 19:27

jetzt bin ich etwas weiter, es wird jedoch nur eine datei kopiert, dann passiert nichts mehr.

ich glaube den zweiten start: loop habe ich noch nicht wirklich im griff :-)

Code: Select all


#NoEnv
Gui, Add, Button, w200 gstart_gross, Verzeichnis Gross  
Gui, Add, Button, w200 gstart_klein, Verzeichnis Klein 
Gui, Add, Button, w200 gziel_compare, Verzeichnis Ziel
Gui, Add, Button, w200 gstart, Start
Gui, Show, , A_GuiControl
Return
GuiClose:
GuiEscape:
ExitApp

start_gross:
FileSelectFolder, start_gross, , 3, Verzeichnis auswählen
return

start_klein:
FileSelectFolder, start_klein, , 3, Verzeichnis auswählen
return

ziel_compare:
FileSelectFolder, ziel_compare, , 3, Verzeichnis auswählen
return

start:
Loop, %start_klein%\*.*, 0, 1
ergebnis_klein .= A_LoopFileName "`n"

Loop, %start_gross%\*.*, 0, 1
{{
if ergebnis_klein contains %A_LoopFileName%
return
}
msgbox, %start_gross%\%A_LoopFileName%----%ziel_compare%\%A_LoopFileName% ;test
filecopy, %start_gross%\%A_LoopFileName%, %ziel_compare%\%A_LoopFileName%
return
}
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: verzeichnisse vergleichen

17 Jan 2018, 05:02

Moin,

eine Return Anweisung innerhalb einer Schleife (Loop) sorgt für den sofortigen Abbruch der Schleife. Probier das mal (ungetestet):

Code: Select all

#NoEnv
Gui, Add, Button, w200 gstart_gross, Verzeichnis Gross
Gui, Add, Button, w200 gstart_klein, Verzeichnis Klein
Gui, Add, Button, w200 gziel_compare, Verzeichnis Ziel
Gui, Add, Button, w200 gstart, Start
Gui, Show, , A_GuiControl
Return
GuiClose:
GuiEscape:
ExitApp

start_gross:
FileSelectFolder, start_gross, , 3, Verzeichnis auswählen
return

start_klein:
FileSelectFolder, start_klein, , 3, Verzeichnis auswählen
return

ziel_compare:
FileSelectFolder, ziel_compare, , 3, Verzeichnis auswählen
return

start:
Loop, %start_klein%\*.*, 0, 1
   ergebnis_klein .= A_LoopFileName "`n"

Loop, %start_gross%\*.*, 0, 1
{
   if ergebnis_klein contains %A_LoopFileName%
      continue
   msgbox, %start_gross%\%A_LoopFileName%----%ziel_compare%\%A_LoopFileName% ;test
   filecopy, %start_gross%\%A_LoopFileName%, %ziel_compare%\%A_LoopFileName%
}
Return
effel
Posts: 542
Joined: 16 Jan 2018, 13:34

Re: verzeichnisse vergleichen

17 Jan 2018, 08:26

hallo just me, vielen dank, das funktioniert wunderbar. hatte auch schon eine andere funktionierende methode gefunden, aber deine version mit continue ist viel schneller.

Code: Select all

Loop, %start_gross%\*.*, 0, 1
{
if not fileexist(start_klein "\" A_LoopFileName)
filecopy, %start_gross%\%A_LoopFileName%, %ziel_compare%\%A_LoopFileName%
}
wie bekomme ich es nun hin, das auch unterverzeichnisse mit geLoopt werden?

Code: Select all

Loop, %start_gross%\*.*, 0, 1

Code: Select all

Loop, %start_gross%\*.*, 1, 1
habe es schon getestet mit einer 1 statt einer null, aber damit erreiche ich nichts.

die files in unterverzeichnissen sollen dann auch mit unterverz. in den zielordner kopiert werden

lg effel

der besseren übersicht halber poste ich mein script im aktuellen zustand

Code: Select all

#NoEnv
Gui, Add, Button, w350 gneue_bilder, Neue Bilder  
Gui, Add, Button, w350 gmeine_bilder, Meine Bilder 
Gui, Add, Button, w350 gVerzeichnis_Ziel, Verzeichnis Ziel
Gui, Add, Button, w350 gstart, Start
Gui, Add, Button, w350 gGuiClose, Programm beenden
Gui, Show, , Ordnerinhalt vergleichen
Return

GuiClose:
GuiEscape:
ExitApp

neue_bilder:
FileSelectFolder, neue_bilder, , 3, Verzeichnis auswählen
return

meine_bilder:
FileSelectFolder, meine_bilder, , 3, Verzeichnis auswählen
return

Verzeichnis_Ziel:
FileSelectFolder, Verzeichnis_Ziel, , 3, Verzeichnis auswählen
return

start:
Loop, %meine_bilder%\*.*, 0, 1
ergebnis_meine_bilder .= A_LoopFileName "`n"

Loop, %neue_bilder%\*.*, 0, 1
{
   if ergebnis_meine_bilder contains %A_LoopFileName%
      continue
   filecopy, %neue_bilder%\%A_LoopFileName%, %Verzeichnis_Ziel%\%A_LoopFileName%
}
soundbeep, 1000, 1000
return
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: verzeichnisse vergleichen

17 Jan 2018, 11:40

Die Einbeziehung von Unterverzeichnissen macht das Ganze schon etwas komplizierter. Zunächst einmal können in Verzeichnissen und deren Unterverzeichnissen identische Dateinamen vorkommen. Außerdem müssen die Unterverzeichnisse im Zielverzeichnis bereits erstellt sein, bevor man per FileCopy kopieren kann. Als Zielname reicht dann auch nicht mehr der Dateiname allein. Er muss auch das Unterverzeichnis enthalten. Das Alles erfordert eine penible "Buchführung", die mit Deinen bisher recht einfachen Schleifen nicht zu machen ist.

Ich würde in diesem Fall Assoziative Arrays einsetzen. Ich glaube aber, dass Du eher ein AHK-Neuling bist, und ich kann nicht beurteilen, ob Du da mitziehen willst.

Vielleicht findet sich ja ein anderer Helfer, der Dich mit einer Lösung auf mehr 'traditioneller' Basis unterstützt.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: verzeichnisse vergleichen

17 Jan 2018, 12:13

Bei photos ist das zumal so'ne sache. Wer wert auf (aus)sortierung von wirklich deckungsgleichen bildern legt, sollte wahrscheinlich sowas wie MD5 (checksum) o.ä. bemühen.
Selbst bei einem simplen smartphone bekomme ich heute schon bildreihen im sekundenbruchteil geschossen. IMHO zählt dann nicht mehr der dateiname/zeitstempel sondern der bildinhalt als auswahlkriterium.
effel
Posts: 542
Joined: 16 Jan 2018, 13:34

Re: verzeichnisse vergleichen

18 Jan 2018, 11:18

hallo just me und bobo, das hat mich jetzt schon weiter gebracht.

ich versuche es dann mal mit euren tips weiter zu coden, wobei just me vollkommen recht hat, mein wissen ist tatsächlich sehr begrenzt. habe mir die hilfe zu Assoziative Arrays angesehen und verstehe nur bahnhof. aber viele wege führen zum ziel und probieren geht in meinem falle über studieren :-)
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: verzeichnisse vergleichen

18 Jan 2018, 12:14

Moin effel,

vielleicht bringt Dir 'Echte' Arrays - Grundlagen etwas. Ich werde trotzdem versuchen, Dir das hier nocht einmal genauer zu erklären, sobald ich die Zeit finde.

Bis dann!
User avatar
divanebaba
Posts: 804
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: verzeichnisse vergleichen

19 Jan 2018, 00:32

... oder direkt PathSync verwenden, gähn.
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: verzeichnisse vergleichen

19 Jan 2018, 03:26

Moin divanebaba,

wenn jemand versucht, so etwas mit AHK zu lösen, ist meist der Weg das Ziel. Ich hätte erwartet, dass ein Superhirn zumindest die verbale Beschreibung der Lösung lässig aus dem großen Zeh schüttelt.
User avatar
divanebaba
Posts: 804
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: verzeichnisse vergleichen

19 Jan 2018, 04:04

just me wrote:... wenn jemand versucht, so etwas mit AHK zu lösen, ist meist der Weg das Ziel. ...
Du sagst es selbst: "... ist meist ...". Also besteht auch die Möglichkeit, daß er seine Aufgabe nicht anders zu lösen weiß und AHK für geeignet hält.
Darum habe ich, dank meiner bemerkenswert beneidenswerten Fähigkeiten, meine Lösung, mit dem Wort "oder", als funktionelle Alternative vorgestellt.
Daß ich nun auch Erwartungen erfüllen soll, ZITAT: "die verbale Beschreibung der Lösung", amüsiert mich schon ein wenig.

Das ist Konsequenzmacherei, just me, was Du gerade machst.
Nur weil ich so unglaublich intelligent bin, muss ich es noch lange nicht allen beweisen und "... die verbale Beschreibung der Lösung ..." liefern.
Michael Jordan muss ja auch nicht 24/7 Körbe werfen oder 24/7 dribbeln, nur damit die Leute weiterhin behaupten, er sei "einer der besten Basketballspieler aller Zeiten".
Oder sieht das jemand anders?
Ich finde PathSync ist eine Erwähnung mehrfach wert.
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: verzeichnisse vergleichen

19 Jan 2018, 04:25

Wenn ich so eine einfache Alternative zu einem Programm bekomme bei dem für mich nur der Weg zählt würde das bei mir nur die Motivation dämpfen. Ich gehe Mal davon dass das bei anderen genau so ist - ich würde dich daher bitten zumindest vorher nachzufragen.
Recommends AHK Studio
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: verzeichnisse vergleichen

19 Jan 2018, 04:48

divanebaba wrote:
just me wrote:... wenn jemand versucht, so etwas mit AHK zu lösen, ist meist der Weg das Ziel. ...
Du sagst es selbst: "... ist meist ...". Also besteht auch die Möglichkeit, daß er seine Aufgabe nicht anders zu lösen weiß und AHK für geeignet hält.
Darum habe ich, dank meiner bemerkenswert beneidenswerten Fähigkeiten, meine Lösung, mit dem Wort "oder", als funktionelle Alternative vorgestellt.
Daß ich nun auch Erwartungen erfüllen soll, ZITAT: "die verbale Beschreibung der Lösung", amüsiert mich schon ein wenig.

Das ist Konsequenzmacherei, just me, was Du gerade machst.
Nur weil ich so unglaublich intelligent bin, muss ich es noch lange nicht allen beweisen und "... die verbale Beschreibung der Lösung ..." liefern.
Michael Jordan muss ja auch nicht 24/7 Körbe werfen oder 24/7 dribbeln, nur damit die Leute weiterhin behaupten, er sei "einer der besten Basketballspieler aller Zeiten".
Oder sieht das jemand anders?
Ich finde PathSync ist eine Erwähnung mehrfach wert.
[divanebaba] Sollte das jetzt (mal wieder) in eine superhirn-eloquente rechtfertigungskakophonie ausarten, sehen wir uns im Off-Topic wieder. [/divanebaba] :lolno: :yawn:

Und ja, das verlinkte tool scheint als alternative geeignet :thumbup: Lässt sich über die kommandozeile aufrufen, und wird über eine INI datei konfiguriert (ließe sich demnach mit AHK locker befrickeln).
Für laufschwache coder - mit zu viel weg vor dem ziel - mag das ausreichen. Doch jetzt isser doch schon unterwegs, warum also umkehren ;)
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: verzeichnisse vergleichen

19 Jan 2018, 04:51

Ich glaube das es dann fast genau so umständlich ist - wenn du sagst das man eine .ini befüttern muss etc.
Recommends AHK Studio
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: verzeichnisse vergleichen

19 Jan 2018, 04:58

Moin Gemeinde,

lassen wir doch einfach effel entscheiden, ob sie/er weitermachen will. Das artet hier sonst wieder aus!
User avatar
divanebaba
Posts: 804
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: verzeichnisse vergleichen

19 Jan 2018, 04:58

nnnik wrote:... ich würde dich daher bitten zumindest vorher nachzufragen.
Ich denke mal, auch wenn die Leute nicht intelligent genug sind, sind sie wenigstens alt genug, daß man Ihnen die Entscheidung überlässt.
Ich nahm ihm keineswegs seine Wahlmöglichkeit.
Natürlich hast Du Recht, nnnik, daß fertige Lösungen die Motivation zum Selbstlernen ausbremsen kann.
Insofern könnte man aber auch jedes noch so leichte Soufflieren, als Motivationsbremse und Lernhindernis, darstellen.

Außerdem ist es erwähnt worden, daß das Abgleichen von Dateien samt Unterordnern wirklich kein Kinderspiel ist.
Mit einer bereits vorhandenen funktionellen Lösung könnte er schon mal Ergebnisse liefern und danach immer noch lernen.
Ohne meinen Vorschlag, kann er vielleicht etwas lernen, aber, falls benötigt, keine schnellen Ergebnisse liefern.
Mir ist das egal. Ich habe mein Ziel erreicht, welches lautet: "Support, Eigenwerbung und etwas Zeitvertreib". :mrgreen: :mrgreen:
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: verzeichnisse vergleichen

19 Jan 2018, 05:02

nnnik wrote:Ich glaube das es dann fast genau so umständlich ist - wenn du sagst das man eine .ini befüttern muss etc.
Gibt schon ne gui dazu, die dann eine default.ini ablegt. Vom developer gibts praktisch NICHTS an doku dazu. Gänzlich uncool. Trost für die Cpp'ler unter uns, der quellcode ist dabei.
Mir ist das egal. Ich habe mein Ziel erreicht, welches lautet: "Support, Eigenwerbung und etwas Zeitvertreib".
lassen wir doch einfach effel entscheiden, ob sie/er weitermachen will. Das artet hier sonst wieder aus!
Am[i|e]n 8-)
effel
Posts: 542
Joined: 16 Jan 2018, 13:34

Re: verzeichnisse vergleichen

19 Jan 2018, 07:33

hallo ahk gemeinde,
hatte schon gedacht, "was hast du da nur angestellt", einen disput wollte ich mit meiner anfrage natürlich nicht etablieren.

als divanebaba mit seiner programm empfehlung erschien, habe ich nachdem ich es nun natürlich installierte, eine sehr gute lösung parat. dafür auch dir vielen dank. das ist jetzt erstmal das brauchbarste, was zur verfügung steht und wird auch schon benutzt. habe aber leider keine möglichkeit gefunden es mit cmd zu nutzen, aber ich habe auch noch nicht im dortigen forum gesucht. eine ini datei für divanebaba habe ich leider nicht gefunden.

letztendlich, mit ahk hätte ich mehr möglichkeiten.

das programm ist für eine freundin, sie hat eine von diesen angeber kameras, und somit etliche fotos. diese sortiert in den griff zu bekommen ist ohne extra ahk tool fast unmöglich.

mit ahk hätte sie, wenn ich es hin bekomme, sicher mehr möglichkeiten.

auch den tip von bobo habe ich gleich mit in meine planung aufgenommen,(danke) dachte hier zwar nicht an md5, sondern an die metadaten im file, darin wären dann ja noch andere daten, wie z.b. auflösung, oder je nach quelle geodaten...

ich werde mit meinen begrenzten programmierkünsten einfach mal weiter versuchen, es mit ahk und evt. cmd tools zu schaffen und komme dann, wenn ich mal wieder ein wort suche, wie oben "continue", nochmal ins ahk forum und frage einfach :-)

lieben gruss effel
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: verzeichnisse vergleichen

19 Jan 2018, 08:14

Yep, you are to blame :lolno:

Code: Select all

#SingleInstance, Force

F10::Run, pathsync.exe --help   ; das ist alles was es an hilfe dazu gibt. Die INI-datei liegt im root-verzeichnis der app.
User avatar
divanebaba
Posts: 804
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: verzeichnisse vergleichen

19 Jan 2018, 09:15

Ich habe hier keine deutsche Lehrerempfehlung ausgesprochen, sondern eine Empfehlung ohne Falltür.
Allerdings erwecken manche Beiträge den Eindruck, meine Empfehlung, das PathSync, sei nur Käse.
Schaut euch doch mal diese Maske an. Diese ist vollkommen selbsterklärend.
Wer nicht unbedingt ein AHK-Tool braucht, ist mit PathSync, für einfache Synchronisierungen, auch ohne Hilfedatei und ohne Supportforum, bestens bedient, es sei denn, er oder sie hat noch nie ein Windows-Programm bedient.
pathsync.jpg
pathsync.jpg (48.94 KiB) Viewed 2356 times
PS: Ich hatte vor Monaten mal gefragt, wo ich denn Bilder für das AHK-Forum einstellen kann. Jetzt habe ich es gefunden.
Die Hinweise und Empfehlungen von damals entbehren die AHK-eigene Lösung, welche ich vor kurzem erst gesehen, gesucht und gefunden habe.
Ein wenig versteckt, als Dateianhang, kann man diese in das Forum hochladen (sogar per Drag & Drop).

Nur einen Vorsichtshinweis: Mit PathSync überschriebene, oder gelöschte Dateien sind (meines Wissens nach) nicht wiederherstellbar.
Darum unbedingt sorgsam darauf achten, Quell- und Zielordner nicht zu verwechseln. Die Dateien wären hinüber.

Noch einen Hinweis: Die Hilfedatei enthält unter Loop (Dateien & Ordner) jede Menge Beispiele, die durch Kombination auch effel's Anforderungen erfüllen sollten.

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 28 guests