Allgemeine und spezielle Fragen zu Schaltern und Scripts

Aktuelle Version: 12.21 (22.06.2020)
Alles zum Thema Directory Opus
TCS
Beiträge: 9
Registriert: 21. Mai 2008 09:46

Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von TCS »

Hallo,

ich bin begeisterter DOpus user und möchte mich nun etwas tiefer in die Materie einarbeiten indem ich Buttons erstellen will, welche mir bei der alltäglichen Arbeit eine Menge Zeit abnehmen sollen.
Meine erste Frage an euch währe:

Mit welchen Befehlen kann man im Befehlseditor arbeiten? Sind das Batchbefehle, DOpus spezifische Befehle, VBS Befehle...?

Diese erste Frage ist eher genereller Natur. Nun also zu meinem ersten "komplexen" Button:

Ich möchte einen Button erstellen, der Folgende Dinge bei nur einem Klick durchführt:

1. Dateien nach dem Muster #_* selektieren (funktioniert bereits mit: Select #_*)

2. Dateinamen der gewählten Dateien in die Zwischenablage kopieren (hätte hier den Befehl: Clipboard COPYNAMES=nopaths gewählt, der als einzelner Button ja auch funktioniert, aber wie schreibe ich mehrere Befehle auf einen Button, so, dass sie bei nur einem Klick nacheinander abgearbeitet werden???)

3. Gehe eine Ebene höher (meine Wahl: go up)

4. So und jetzt brauche ich auf jeden Fall eine Hilfestellung: erstelle mir Ordner mit den Dateinamen aus der Zwischenablage. Also für jeden Dateinamen den ich kopiert habe einen Ordner mit genau dem selben Namen.

5. Gehe zurück (meine Wahl: Go BACK)

6. Selektiere alle Ordner und Dateien, die nicht in das Muster #_* fallen (Hier brauche ich Hilfe. Wie mache ich diese Selektion?)

7. Kopiere die selektierten Dateien und Ordner (Clipboard COPY)

8. Ab hier habe ich leider keine eigenen Ideen mehr: Es sollen nun die kopierten Dateien und Ordner in die, eine Ebene höher erstellten Ordner eingefügt werden.

9. Des weiteren sollen wiederum aus dem Ursprungsordner die jeweilige Datei, die den selben Namen trägt wie der eine Ebene höher neu erstellte Ordner, in eben diesen hineinkopiert werden.

Ich hoffe es wird einigermaßen klar was ich machen möchte. Sollten meine Überlegungen grundsätzlich falsch, oder viel zu kompliziert sein freue ich mich sehr über Hinweise. Ich danke euch jetzt shcon einmal für eure Hilfe.

Viele Grüße
TCS
TCS
Beiträge: 9
Registriert: 21. Mai 2008 09:46

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von TCS »

Hat niemand eine Idee? Oder habe ich mich nicht deutlich genug ausgedrückt?

Bitte nur ein paar Hinweise!
abr
Berater
Beiträge: 631
Registriert: 10. Apr 2007 02:50
Betriebssystem: Win 10 Home 64bit

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von abr »

TCS hat geschrieben: Mit welchen Befehlen kann man im Befehlseditor arbeiten? Sind das Batchbefehle, DOpus spezifische Befehle, VBS Befehle...?
Für Batchbefehle, also DOS, wähle im Schaltereditor entsprechend bei "Funktion" "MS-DOS Batchfunktion" aus, wobei die normalen Befehle je nach Berechtigungen funktionieren. Spezifische Befehle für Opus sind zu wählen über "Standardfunktion, Opus oder extern". Da es sehr viele Befehle gibt, empfehle ich etwas im Handbuch zu lesen, da wird jeder Befehl beschrieben. Siehe dazu das passende Kapitel 15 "vordefinierte und Raw-Befehle". Ferner gehen prinzipiell auch Scripte wie vbs oder ahk, aber das ist schon etwas spezieller.
TCS hat geschrieben:
2. Dateinamen der gewählten Dateien in die Zwischenablage kopieren (hätte hier den Befehl: Clipboard COPYNAMES=nopaths gewählt, der als einzelner Button ja auch funktioniert, aber wie schreibe ich mehrere Befehle auf einen Button, so, dass sie bei nur einem Klick nacheinander abgearbeitet werden???)

4. So und jetzt brauche ich auf jeden Fall eine Hilfestellung: erstelle mir Ordner mit den Dateinamen aus der Zwischenablage. Also für jeden Dateinamen den ich kopiert habe einen Ordner mit genau dem selben Namen.

zu 2: Befehle sind einfach in der erweiterten Ansicht untereinander schreiben.
http://img3.imageshack.us/img3/8054/clipl.png
clipl.png
Dabei ist zu beachten, daß nicht alle Befehle hintereinander ausgeführt werden können, besonders, wenn externe Befehle benutzt werden. Aber dafür gibt es oft Tricks, so daß die Lösbarkeit von der jeweiligen Aufgabe abhängt.

zu 4:

Clipboard COPYNAMES=nopaths REGEXP (.*)\.[^.]* \1
CreateFolder FROMCLIPBOARD


erzeugt aus dem Namen einer Datei über die Zwischenablage einen gleichnamigen neuen Ordner, ohne Erweiterung. Wie das bezogen auf mehrere Namen geht, konnte ich so auf die Schnelle nicht herausfinden, aber das ist selbstverständlich auch möglich.
TCS
Beiträge: 9
Registriert: 21. Mai 2008 09:46

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von TCS »

Vielen Dank für diese wichtigen Informationen. Das bringt mich schonmal ein Stück weiter.

Für die anderen Punkte bräcuhte ich bitte noch ein paar Hilfestellungen!
abr
Berater
Beiträge: 631
Registriert: 10. Apr 2007 02:50
Betriebssystem: Win 10 Home 64bit

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von abr »

Das hier sollte genau das Gewünschte machen:


@firstfileonly
Copy * HERE CREATEFOLDER ..\{o|noext}
TCS
Beiträge: 9
Registriert: 21. Mai 2008 09:46

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von TCS »

Vielen Dank! Das vereinfacht ja schon einmal so einiges an meinem Vorhaben. aber wie nennen sich die Angaben am Ende der zweiten Zeile ({o|noext}) ? Und wo finde ich Erläuterungen zu diesen? Mein Problem im Moment ist ja, dass ich den neuen Ordner nicht nur für das erste File sonder für jedes File (immer unterschiedlich viele) einen eigenen Ordner erstellen will.
abr
Berater
Beiträge: 631
Registriert: 10. Apr 2007 02:50
Betriebssystem: Win 10 Home 64bit

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von abr »

TCS hat geschrieben:... aber wie nennen sich die Angaben am Ende der zweiten Zeile ({o|noext}) ? Und wo finde ich Erläuterungen zu diesen? Mein Problem im Moment ist ja, dass ich den neuen Ordner nicht nur für das erste File sonder für jedes File (immer unterschiedlich viele) einen eigenen Ordner erstellen will.
Dann war das doch anders gemeint. Du hast Deine Frage etwas umständlich & unklar (sorry) ausgedrückt, deswegen war ich mit nicht sicher ;)
Siehe per "F1" in der Onlinehilfe. Diese Angaben sind die Befehlsoptionen, so wie sie zu jedem Befehl beschrieben werden. Zu diesen Kontrollsequenzen findest Du mehr Informationen in der Onlinehilfe unter "Codes zur Befehlskontrolle" in englisch, aber bald auch auf deutsch.

Der Code für den Button lautet:

Rename REGEXP PATTERN "(.*)(\..*)" to "\1\\\0"
TCS
Beiträge: 9
Registriert: 21. Mai 2008 09:46

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von TCS »

Die Funktion funktioniert, ein bisschen auf meine Bedürfnisse angepasst, wunderbar! Danke!

An folgendem Problem scheitere ich allerdings trotz des Handbuchstudiums:

Ich möchte jetzt einen Ordner in mehrere Ordner im selben Verzeichnis hineinkopieren und verstehe nicht, warum folgendes nicht funktioniert:

Code: Alles auswählen

@dirsonly 
Select  #_*
Copy *ex TO {allfilespath}  
Die Selction funktioniert das Kopieren auch, allerdings wird der Ordner (in meinem Fall immer mit dem Namen tex) nur in den ersten der markierten Ordner kopiert und nicht in alle.

Für erneute Hilfe wäre ich sehr dankbar!
abr
Berater
Beiträge: 631
Registriert: 10. Apr 2007 02:50
Betriebssystem: Win 10 Home 64bit

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von abr »

TCS hat geschrieben: Ich möchte jetzt einen Ordner in mehrere Ordner im selben Verzeichnis hineinkopieren und verstehe nicht, warum folgendes nicht funktioniert:

Code: Alles auswählen

@dirsonly 
Select  #_*
Copy *ex TO {allfilespath}  
Das ist wieder das Problem, daß überhaupt nicht klar wird, was genau Du versuchst. Soll zB. einer von 5 Ordnern in die übrigen 4 Ordner hineinkopiert werden (so würde ich Deine Angaben interpretieren)? Bitte beschreibe genauer, was gemacht werden soll.

Edit: also, @dirsonly ist soweit klar, Du willst nur Ordner kopiert haben. Aber was soll Select #_* bewirken? Sollen alle Dateien gewählt werden (das wäre dann select all). Copy *ex TO {allfilespath} ist auch nicht korrekt, um Ordner mit dem Namensbestandteil "ex" zu kopieren müsste es dann copy *ex* TO {allfilespath} heissen.
TCS
Beiträge: 9
Registriert: 21. Mai 2008 09:46

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von TCS »

OK tut mir leid wenn das zu undeutlich war. Hier noch einmal ganz deutlich:

Ich bin jetzt bei meinem Vorhaben an dem Punkt angelangt an dem ich aus meinen gewählten Dateien Ordner mit dem selben Namen erstellt habe. In meinem Verzeichniss liegen jetzt also mehrere Ordner, sonst nichts. Ein Ordner trägt den Namen Tex oder tex (abhängig von meinem Programm welches diesen Ordner erstellt). Diesen Ordner möchte ich nun in alle anderen Ordner die auf der selben Ebene liegen wie der Tex Ordner, hineinkopieren. Eigentlich nichts kompliziertes.

Kurz noch zu meinem Code:
@dirsonly ist ja klar und soweit richtig.
Select #_* : Das ist natürlich falsch. Ich möchte hier die Ordner selektieren in die der tex Ordner hineinkopiert werden soll. Diese zeichnen sich in ihrer Benennung dadurch aus, das sie mit einer Zahl anfangen, dann ein Unterstrich folgt und der Rest unterschiedlich ist. Also wollte ich diese per Wildcardmuster selektieren. Richtig müsste es also heißen: Select [0-9]_*. Das funktioniert auch.
Copy *ex TO {allfilespath} : Da der zu kopierende Ordner wie gesagt immer Tex oder tex heißt, denke ich das die Selektion *ex richtig ist (sie funktioniert auch).

Das Problem bleibt, dass bei diesem Code der tex ordner nur in einen der anderen Ordner kopiert wird und nicht in alle.
abr
Berater
Beiträge: 631
Registriert: 10. Apr 2007 02:50
Betriebssystem: Win 10 Home 64bit

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von abr »

Folgender Code funktioniert:

select [0-9]_* TYPE=dirs DESELECTNOMATCH
dopusrt /CMD Copy FILE *ex TO {filepath$}


mit speziellem Dank an Jon & Leo.
TCS
Beiträge: 9
Registriert: 21. Mai 2008 09:46

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von TCS »

Entschuldigung, dass ich mich so spät erst wieder zu Wort melde.

Erstmal 1000 Dank! Funktioniert wirklich wunderbar. Das war genau das was ich gesucht habe.

Doch so groß die Freude auch ist, wenn ich den Code sehe und ihn nicht einmal im Nachhinein verstehe, macht mich das ein bisschen betrübt :roll:

Als falls jemand lust hat mir folgendes noch einmal zu erläutern:

1. wozu das DESELECTNOMATCH? (Oder nur deshalb, falls noch etwas anderes selektiert war?)
2. Dazu: dopusrt /CMD habe ich nirgends etwas finden können... Ich würde mich freuen dies zu verstehen :)

Ansonsten noch einmal vielen Dank
Tim
Benutzeravatar
tomtom
Beiträge: 338
Registriert: 2. Jun 2004 07:26
Betriebssystem: Win 7 Home 32bit

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von tomtom »

zu 1.
Ja, richtig.

zu 2:
dopusrt.exe ist das Tool um Dopus per Kommandozeile anzusprechen. /cmd bedeutet das jetzt ein Befehl folgt.
In diesem Fall wurde der Copy-Befehl für jeden selektierten Ordner ausgeführt.
TCS
Beiträge: 9
Registriert: 21. Mai 2008 09:46

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von TCS »

Und warum funktioniert dies in diesem Fall nur über die Kommandozeile?
abr
Berater
Beiträge: 631
Registriert: 10. Apr 2007 02:50
Betriebssystem: Win 10 Home 64bit

Re: Allgemeine und spezielle Fragen zu Schaltern und Scripts

Beitrag von abr »

TCS hat geschrieben:Und warum funktioniert dies in diesem Fall nur über die Kommandozeile?
Wahrscheinlich deswegen, weil ein direktes Kopieren nacheinander der Funktion "Copy Queue"
entsprechen würde, also einer Funktion, die Opus (noch) nicht beherrscht (ist afaik aber oft
nachgefragt & daher für eine zukünftige Version geplant). Da sich das aber über einen externen Befehl,
hier also über "cmd", lösen lässt, geht es ja eigentlich schon.
Antworten