Ordnerstruktur in mehrere Zielordner kopieren

Aktuelle Version: 12.6 (09.06.2017)
Alles zum Thema Directory Opus
Antworten
josinoro
Beiträge: 166
Registriert: 4. Aug 2013 19:58
Version DOpus: Pro

Ordnerstruktur in mehrere Zielordner kopieren

Beitrag von josinoro » 19. Sep 2017 21:33

Hallo Listlinge,

ich suche nach einer Möglichkeit um eine Ordnerstruktur in mehrere Zielordner kopieren zu können.

Bisher habe ich einen Filter mit Namen Ordnerstruktur angelegt, der mir nur die Ordner ausfiltert. Den verwende ich dann in meinem Schalter.

Code: Alles auswählen

dopusrt /cmd Copy FILTER="Ordnerstruktur" {sourcepath}  TO {destpath} 
Das funktioniert auch in dem ausgewählten Zielordner. Nun möchte ich aber die ausgewählte Ordnerstruktur in alle ausgewählten, nicht geöffneten, Ordner kopieren. Daran scheitere ich leider kläglich.

Mit freundlichen Grüßen

josinoro

Benutzeravatar
Kundal
Moderator
Beiträge: 1337
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Ordnerstruktur in mehrere Zielordner kopieren

Beitrag von Kundal » 20. Sep 2017 21:54

Schaltercode
Funktion: Skriptfunktion
Skripttyp: JScript

Code: Alles auswählen

function OnClick(ClickData) {
var DestDirs = ClickData.func.desttab.selected_dirs;
	for (i = 0; i < DestDirs.count; i++) {
		ClickData.func.command.RunCommand('Copy FILTER="Ordnerstruktur" {sourcepath} TO "' + DestDirs(i) +'"');
	}
}

josinoro
Beiträge: 166
Registriert: 4. Aug 2013 19:58
Version DOpus: Pro

Re: Ordnerstruktur in mehrere Zielordner kopieren

Beitrag von josinoro » 21. Sep 2017 19:15

Hallo Kundal,

vielen Dank für deine Antwort.

Das Script funktitoniert vom Root-Verzeichnis aus. Aber leider nur von dort. Möchte ich eine Ordnerstruktur innerhalb eines Ordners (A) auf andere Ordner (A.1, A.2, A3, ..) des gleichen Ordners (A) kopieren, versucht das Script vom Root ausgehend alles zu kopieren. Das schlägt natürlich fehl, da er ja nicht auf sich selbst kopieren kann. Trotzdem ist mir mit diesem Script schonmal geholfen.

Mit freundlichen Grüßen

josinoro

Benutzeravatar
Kundal
Moderator
Beiträge: 1337
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Ordnerstruktur in mehrere Zielordner kopieren

Beitrag von Kundal » 21. Sep 2017 22:02

Das Script funktitoniert vom Root-Verzeichnis aus. Aber leider nur von dort. Möchte ich eine Ordnerstruktur innerhalb eines Ordners (A) auf andere Ordner (A.1, A.2, A3, ..) des gleichen Ordners (A) kopieren, versucht das Script vom Root ausgehend alles zu kopieren. Das schlägt natürlich fehl, da er ja nicht auf sich selbst kopieren kann.
Mit dem Copy-Befehl kommst du da sicher nicht weiter. Ich könnte mir aber z.B. vorstellen, dass das Skript die Ordnerstruktur mit DOpus.FSUtil.ReadDir auslesen und dann mit CreateFolder die Ordner erstellen könnte. Das wird mir aber etwas zu kompliziert, weil ich beim scripten gerade etwas aus der Übung bin. Vielleicht kann tbone da weiterhelfen.

Benutzeravatar
tbone
Berater
Beiträge: 394
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64
Produkt: aktuelle Beta-Version
Version DOpus: Pro

Re: Ordnerstruktur in mehrere Zielordner kopieren

Beitrag von tbone » 22. Sep 2017 06:35

Ich bräuchte da mal eine nähere Erklärung was genau mit dem aktuellen Script passiert, was daran nicht ok ist und wie es denn anders sein soll.
Mit Fall-Beispielen, denn so richtig kann ich mir das noch nicht vorstellen.. demnach auch nicht weiterhelfen. o)

josinoro
Beiträge: 166
Registriert: 4. Aug 2013 19:58
Version DOpus: Pro

Re: Ordnerstruktur in mehrere Zielordner kopieren

Beitrag von josinoro » 22. Sep 2017 18:53

Hallo tbone,

ich versuche es mal etwas genauer zu beschreiben.

In einem Ordner, nennen wir ihn Schule, habe ich x Unterordner, die ich Fach-x nenne.
Jeder Ordner mit dem Namen Fach-x hat eine weitere, recht aufwendige Struktur an Ordnern. Diese möchte ich nun in dem Ordner Fach-01 festlegen und anschließend auf alle Ordner, Fach-02 bis Fach-x, kopieren.

Das Script von Kundal kopiert den ausgewählten Ordner vom Root ausgehend in die ausgewählten Ordner Fach-01 bis Fach-x.

E:\Schule\Fach-01
E:\Schule\Fach-01\Unterlagen
E:\Schule\Fach-01\Termine
E:\Schule\Fach-01\Klausuren
...

E:\Schule\Fach-02
E:\Schule\Fach-03
E:\Schule\Fach-04
...

Mit freundlichen Grüßen

josinoro

Benutzeravatar
Kundal
Moderator
Beiträge: 1337
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Ordnerstruktur in mehrere Zielordner kopieren

Beitrag von Kundal » 22. Sep 2017 20:41

Versuch's mal damit:
Handhabung: Quellordner ist der Ordner Schule. Markiert ist da der Ordner Fach-01 als der Ordner, dessen Unterordner-Struktur kopiert werden soll. Im Ziel ist ebenfalls der Ordner Schule, aber markiert sind die Ordner Fach-02, Fach-03 etc., auf keinen Fall aber der Ordner Fach-01, da du dann wieder versuchst, etwas in sich selbst zu kopieren.

Code: Alles auswählen

function OnClick(ClickData) {
var DestDirs = ClickData.func.desttab.selected_dirs;
	for (i = 0; i < DestDirs.count; i++) {
		ClickData.func.command.RunCommand('Copy FILTER="Ordnerstruktur" "{filepath}*" TO  "' + DestDirs(i) +'"');
	}
}

josinoro
Beiträge: 166
Registriert: 4. Aug 2013 19:58
Version DOpus: Pro

Re: Ordnerstruktur in mehrere Zielordner kopieren

Beitrag von josinoro » 23. Sep 2017 01:36

Hallo Kundal, hallo tbone,

vielen Dank für eure Hilfsbereitschaft. Die Lösung von Kundal funktioniert.

Demnach kopiert sourcepath ab root und filepath ab dem markierten Ordner!?

Mit freundlichen Grüßen

josinoro

Benutzeravatar
Kundal
Moderator
Beiträge: 1337
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Ordnerstruktur in mehrere Zielordner kopieren

Beitrag von Kundal » 23. Sep 2017 08:07

Genau genommen wird im Englischen mit root (Wurzel, Ursprung) das Laufwerk bezeichnet. In deinem Beispiel also E:\.
Source und destination sind Quelle und Ziel. {sourcepath} ist also der Pfad des in der Quelle und {destpath} des im Ziel geöffneten Ordners. {filepath} und {filepathdest} sind entsprechend die Pfade zu markierten Dateien/Ordnern in Quelle und Ziel.
Den Root-Pfad des in Quelle/Ziel angezeigten Ordners bekommst du mit {sourcepath|\} bzw. {destpath|\}.

In der englischen Hilfe findest du diese Dinge hier. Die letzte deutsche Übersetzung war für DOpus 10 und ist für das Wesentliche noch brauchbar aber für Version 12 im Detail unvollständig.

Benutzeravatar
tbone
Berater
Beiträge: 394
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64
Produkt: aktuelle Beta-Version
Version DOpus: Pro

Re: Ordnerstruktur in mehrere Zielordner kopieren

Beitrag von tbone » 23. Sep 2017 08:21

Guten Morgen Kundal!o)
Ich war auch gerade beim Beantworten.. o)

Wenn ich nicht irre, ist "sourcepath" ist immer der gleiche Quellpfad während die Schleife läuft (der Ordner in dem Du die zu kopierenden Ordner selektiert hast), während "filepath" die selektierten Ordner dort widerspiegelt und Copy dementsprechend "öfter" läuft. Ehrlich gesagt, so richtig komme ich nicht hinter die Logik, das Copy Kommando mixt noch seine eigene Magie dazu, wenn es aber nun läuft, einwandfrei! o)

Randnotiz - die Verwendung der Platzhalter wie "{filepath}" und "{sourcepath}" wird offiziell nicht unterstützt wird wenn man im Scripting unterwegs ist, die sind eigentlich für die Verwendung in Buttons ohne Scripting gedacht. Wenn das Ergebnis aber hinhaut, why not! o)

Benutzeravatar
Kundal
Moderator
Beiträge: 1337
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Ordnerstruktur in mehrere Zielordner kopieren

Beitrag von Kundal » 23. Sep 2017 11:12

Klar, {sourcepath} etc. ist nicht JScript sondern DOpus Buttoncode. In der For-Schleife wird im Script ein normaler DOpus-Buttoncode per ClickData.func.Command.RunCommand(Buttoncode) für jeden im Ziel ausgewählten Ordner ausgeführt.

Hier noch mal eine verbesserte Version, die verhindert, dass es eine Fehlermeldung gibt, weil versehentlich in Quelle und Ziel derselbe Ordner (mit) ausgewählt wurde und dann versucht wird, etwas in sich selbst zu kopieren. Der Code funktioniert auch, wenn in der Quelle mehrere Ordner ausgewählt wurden. Es werden dann in allen im Ziel gewählten Ordnern die Ordnerstrukturen der gewählten Quellordner zusammen kopiert.

Code: Alles auswählen

function OnClick(ClickData) {
var DestDirs = ClickData.func.desttab.selected_dirs;
var SourceDirs = ClickData.func.sourcetab.selected_dirs;
	for (i = 0; i < SourceDirs.count; i++) {
		for (j = 0; j < DestDirs.count; j++) {
			if (!DOpus.FSUtil.ComparePath(SourceDirs(i) ,DestDirs(j))) {
				ClickData.func.command.RunCommand('Copy FILTER="Ordnerstruktur" "' +SourceDirs(i) +'\\*" TO "' +DestDirs(j) +'"');
			}
		}
	}
}

josinoro
Beiträge: 166
Registriert: 4. Aug 2013 19:58
Version DOpus: Pro

Re: Ordnerstruktur in mehrere Zielordner kopieren

Beitrag von josinoro » 26. Sep 2017 12:30

Danke für eure Hilfe.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste