Seite 1 von 1

Ich möchte Scripten lernen?

Verfasst: 10. Nov 2023 13:28
von Maui
Ich möchte nun anfangen in DO das Scripten lernen.
In DO wird VB und JScript unterstützt.
Ist JScript und JavaScript das gleiche?
Kann ich JavaScript lernen und es in DO verwenden?

Ich möchte ein Verzeichnis im Lister oder in der Ordnerstruktur auswählen und über einen Schalter ein Skript ablaufen lassen.
Zur Zeit habe ich den Befehlsinterpreter von DO offen und habe ein kleines Skript geschrieben welches das Selektierte Verzeichnis ausgeben soll.
Was aber leider noch nicht funktioniert?

Bin auf der HilfeSeite von DO und versuche schlau draus zu werden. :D

Code: Alles auswählen

function OnClick(clickData) 
{
    // Aktuelles Verzeichnis auswählen
    var currentPath = clickData.func.sourcetab.path;

    // Ausgabe des aktuellen Verzeichnisses
    DOpus.Output("Das aktuelle Verzeichnis ist: " + currentPath);
}
Kann mir jemand dabei helfen?
Danke

Re: Ich möchte Scripten lernen?

Verfasst: 10. Nov 2023 14:29
von Kundal
Dein Script funktioniert doch. DOpus.Output gibt die Nachricht allerdings nur im Skript-Protokoll aus. Du erwartest vermutlich eine Message-Box. Dafür musst du einen kleinen Dialog erstellen, der nur einen OK-Button hat:

Code: Alles auswählen

function OnClick(clickData) 
{
    // Aktuelles Verzeichnis auswählen
    	var currentPath = clickData.func.sourcetab.path;
	
    // Ausgabe des aktuellen Verzeichnisses
	dlg = clickData.func.dlg
    	dlg.message = ("Das aktuelle Verzeichnis ist: " + currentPath);
	dlg.buttons = "OK";
	dlg.Show;
}

Re: Ich möchte Scripten lernen?

Verfasst: 10. Nov 2023 14:44
von Maui
OK, soweit funktioniert es mit dem Schalter muss nur darauf achten JScript zu aktivieren.
Mit dem Befehlszeileninterpreter hat es nicht geklappt.

Jetzt versuche ich das aus zu bauen und Unterverzeichnisse fest zu stellen Unterverzeichnisse öndern und nach entsprechenden Inhalten in verschiedene Verzeichnisse einsortieren lassen.

Also das was ich schon mal mit Java Programmiert habe.

Re: Ich möchte Scripten lernen?

Verfasst: 10. Nov 2023 14:49
von tbone
Unterschied JScript vs. Javascript habe ich hier mal näher erklärt (lässt sich nicht eindeutig mit Ja/Nein beantworten):
https://resource.dopus.com/t/how-to-sta ... /6?u=tbone

Wenn Du mit dem Scripting so am Scripten bist, hier ist die Einstiegsseite zum Thema in den DO Docs:
https://www.gpsoft.com.au/help/opus12/i ... ipting.htm

Und bestenfalls diese Referenz zur Hand haben, ohne geht's kaum (Objects und Events):
https://www.gpsoft.com.au/help/opus12/i ... erence.htm

Und diese Referenz für Internal Commands, Argument-Types ist auch wichtig, um alles miteinander zu verbinden:
https://www.gpsoft.com.au/help/opus12/i ... erence.htm

ps: Für so einfache JScript-Übungen, kann man das DO "CLI" verwenden (auf JScript umschalten).
Aber einfacher ist meiner Meinung bestimmte Tests direkt in JScript als *.js Datei anzulegen und zu editieren im Editor Deiner Wahl.
Und dann "cscript.exe my_jscript.js" in der Konsole ausführen, oder den Editor so einrichten, dass er das Script laufen lässt und die Ausgabe direkt anzeigt (ist nur doof bei Endlosschleifen, wenn der Editor das Beenden des Script-Tasks nicht machen kann, dann musst Du den TaskManager nehmen).

In DO musst Du Ausgaben immer mit "DOpus.Output()" machen, im JScript ohne DO, nur rein Windows, da ist es "WSH.Echo()".

Re: Ich möchte Scripten lernen?

Verfasst: 10. Nov 2023 16:21
von Maui
Vielen Dank.

Jetzt möchte ich im selektierten Verzeichnis nach Unterverzeichnisse suchen und diese automatisch umbenennen.
Leider habe ich das Problem das überhaupt keine Verzeichnisse erkannt werden. Zumindest denke ich das weil
die Anzahl der Verzeichnisse mit "undefines" ausgegeben werden.
Damit wird die Schleife auch nicht abgearbeitet.

Vielleicht sieht jemand das Problem?
Danke

Code: Alles auswählen

function OnClick(clickData) {
    var cmd = clickData.func.command;

    // Aktuelles Verzeichnis auswählen (Root-Verzeichnis)
    var rootPath = clickData.func.sourceTab.path;

    // Ausgabe des aktuellen Verzeichnisses
    DOpus.Output("Das aktuelle Verzeichnis ist: " + rootPath);

    // Verzeichnisse im Root-Verzeichnis auflisten
    var subDirs = DOpus.FSUtil.ReadDir(rootPath, true);
	DOpus.Output("Die Anzahl der Verzeichnisse sind: " + subDirs.count);

    // Schleife durch die gefundenen Verzeichnisse
    for (var i = 0; i < subDirs.count; i++) {
        var subDir = subDirs(i);
        var subDirName = subDir.name;

        // Debug-Ausgabe: Aktuelles Verzeichnis und Verzeichnisname
        DOpus.Output("Aktuelles Verzeichnis: " + rootPath);
        DOpus.Output("Verzeichnisname: " + subDirName);

        // Wenn das Verzeichnis "VorschauRendering" gefunden wurde, umbenennen in "render"
        if (subDirName === "VorschauRendering") {
            cmd.RunCommand('Rename TO="render" FILE "' + rootPath + "\\" + subDirName + '"');
            DOpus.Output("Das Verzeichnis 'VorschauRendering' wurde gefunden und in 'render' umbenannt.");
        }

        // Wenn das Verzeichnis "Maps" gefunden wurde, umbenennen in "texturen"
        if (subDirName === "Maps") {
            cmd.RunCommand('Rename TO="texturen" FILE "' + rootPath + "\\" + subDirName + '"');
            DOpus.Output("Das Verzeichnis 'Maps' wurde gefunden und in 'texturen' umbenannt.");
        }
		DOpus.Output("Umbenennung der Verzeichnisse abgeschlossen.");
    }

    // Meldung über abgeschlossene Umbenennungen
    DOpus.Output("Das Scriptende wurde erreicht");
}

Re: Ich möchte Scripten lernen?

Verfasst: 10. Nov 2023 20:57
von tbone
image.png
image.png (19.57 KiB) 952 mal betrachtet
Gibt es dort in der Reference ein Property "count" für FolderEnum?..