Script zum Verschieben von Elementen von Ordner A nach Ordner B

Hallo zusammen und ein besonderes Halle an alle, die sich mit Mairlist Script besser auskennen als ich,

ich möchte ein Script schreiben, welches ich 1x am Tag über ein Event starte, oder auch mal manuell.

Es soll ganz einfach in der Datenbank alle Elemente aus Ordner A in Ordner B verschieben.

Ich habe das folgenden Script zusammengebaut, aber es funktioniert nicht.
Hat jemand Lust das mal zu testen und mir auf die Sprünge zu helfen?

Ich muss dazu sagen: 1. ich bin wirkloch Laie was die Scripts angeht und 2. wir nutzen Mairlist 6.3.24

Ich bin gespannt und freue mich über jede Hilfe.

Danke schonmal und viele Grüße
Martin

program VerschiebeElemente;

var
  quellOrdnerID, zielOrdnerID: integer;
  element: IPlaylistElement;
  i: integer;
  quellOrdner, zielOrdner: IFolder;

begin
  // Definiere Quell- und Zielordner IDs
  quellOrdnerID := 8203;  // ID von Ordner A
  zielOrdnerID := 8279;   // ID von Ordner B

  // Hole die Ordner-Objekte anhand der IDs
  quellOrdner := Database.GetFolderByID(quellOrdnerID);
  zielOrdner := Database.GetFolderByID(zielOrdnerID);

  // Überprüfe, ob die Ordner existieren
  if quellOrdner = nil then
  begin
    LogMessage('Quellordner mit ID ' + IntToStr(quellOrdnerID) + ' existiert nicht.');
    exit;
  end;

  if zielOrdner = nil then
  begin
    LogMessage('Zielordner mit ID ' + IntToStr(zielOrdnerID) + ' existiert nicht.');
    exit;
  end;

  // Durchlaufe alle Elemente im Quellordner
  for i := quellOrdner.ElementCount - 1 downto 0 do
  begin
    element := quellOrdner.Elements[i];
    
    // Verschiebe das Element in den Zielordner
    if Database.MoveElement(element, zielOrdner) then
      LogMessage('Element ' + element.Title + ' erfolgreich verschoben.')
    else
      LogMessage('Fehler beim Verschieben von Element ' + element.Title);
  end;

  LogMessage('Verschieben der Elemente abgeschlossen.');
end.

Was sagen denn die logs ?
du hast ja ein paar Ausgaben mit im Script, also muss da ja auch irgend etwas stehen, oder?

im Log steht nichts drin
es kommt diese Fehlermeldung:

grafik

änder mal

in

element: IPlaylistItem;

1 Like

Lieber Martin,

bitte sende das nächstemal solche Fehlermeldungen gleich mit. Einfach nur

ist nicht zielführend (und auch nicht eben motivierend). Danke.

1 Like

habe ich geändert, Fehlermeldung ist jetzt:
grafik

Ich hab keine Ahnung, ob es ohne einen Direkten SQL Befehl auch geht.
Aber das war auf die schnelle das einfachste:

program VerschiebeElemente;

var
  quellOrdnerID, zielOrdnerID: Integer;
 

begin
  // Definiere Quell- und Zielordner IDs
  quellOrdnerID := 8203;  // ID von Ordner A
  zielOrdnerID := 8279;   // ID von Ordner B

Database(0). ExecuteSQL('update item_folders set folder='+IntToStr(zielOrdnerID)+' where folder ='+IntToStr(quellOrdnerID));
   SystemLog('fertig.');
end.

Bitte beachte, das ich nicht weiß, welche Nebenwirkungen hier auftreten könnten.

Wo kam eígentlich dein Code her ?
das sieht mir fast nach ChatGPT aus…

1 Like

Ich habe Dein Script lokal separat vom Sendesystem getestet und es hat einwandfrei funktioniert. Anschließend im Sendesystem ebenso erfoglreich getestet.

VIELEN DANK. Das Script hilft uns sehr!

P.S.: ich hatte claude.ai genutzt

3 Likes