Ja, kann ich bestätigen!
Erst ein $FC_OVERWRITE kopiert die fehlenden Dateien.
Auch wenn man alle Dateien und das Unterverzeichnis aus dem Zielverzeichnis löscht, wird keine einzige Datei kopiert.
Offensichtlich findet bei $FC_NOOVERWRITE nur ein Test auf die Existenz des Zielverzeichnisses statt. Existiert es bereits bricht DirCopy ab. Für mich ein klarer Bug! Aber vermutlich ist das wieder ein Feature.
Ist identisch zu meinen Tests, daher betrachte auch ich dieses Verhalten als klaren Bug !
Auszug aus der Hilfe zu flag :
[optional] dieser Parameter gibt an, ob eventuell schon existierende Dateien überschrieben
werden sollen oder nicht.
0 = (Standard) kein Überschreiben von existierenden Dateien
1 = Überschreiben existierender Dateien
Kein Überschreiben von existierenden Dateien impliziert, dass es existierende Dateien zumindest geben darf. Es wird aber lediglich auf die reine Existenz des Basisverzeichnisses (leer reicht bereits) geprüft.
Damit ist das Defaultflag 0 ($FC_NOOVERWRITE) im Grunde völlig sinnlos.
Wenn das Zielverzeichnis nicht existiert, ist es egal ob $FC_NOOVERWRITE oder $FC_OVERWRITE. Wenn es existiert, dann kommt es zu einem Fehler.
Das Ganze ist zwar nicht so schlimm wie die Endloskaskade von \Quelle\Quelle\Quelle... bei DirMove, trotzdem nicht das Ergebnis, welches viele Nutzer wahrscheinlich erwarten !
Noch ein Grund mehr, lieber _WinAPI_ShellFileOperation() zu benutzen.
Das werde ich jetzt auch mal ins Auge fassen .
Trotzdem ärgerlich, da Funktionen wie DirMove und DirCopy ja nun wirklich keine Exoten sind.
Gruß Musashi