Speichern und Überschreiben von DateienIch habe ein JSL-Skript, das mehrere Blätter öffnet und schließt. Während sie geöffnet sind, werden die Dokumente zu einer einzigen Datei zusammengeführt und die Datei dann in einem lokalen Ordner gespeichert. Das Skript überschreibt derzeit die vorhandene Datei im lokalen Ordner. Gibt es ein Skript, das jedes Mal, wenn das Skript ausgeführt wird, eine neue Datei in einem Unterordner füllt (idealerweise gekennzeichnet durch das Taggen eines Zeitstempels der Erstellung auf dem Titel "Merged"), anstatt das aktuelle zu überschreiben? Oder noch besser, es ist in Ordnung, wenn das aktuelle überschrieben wird, aber jedes Mal, wenn das Skript ausgeführt wird, eine Kopie davon in einem Unterordner gespeichert wird? So etwas wie ein Backlog, das ich mir ansehen kann, aber andere können nur die "Live"-Version sehen
@txnelson , ich habe gesehen, dass Sie hier bei etwas Ähnlichem geholfen haben: https://community.jmp.com/t5/Discussions/Save-new-graph-anstatt-overwriting-the-already-saved-ones/mp/54078#M30546
Vielleicht ist es eine Variation davon?
DatentabelleSkripterstellungWindowsBetreff: Speichern und Überschreiben von DateienBeide Optionen sind mit wenig Skripting möglich. Sie können "timestamp" ganz einfach mit Today() erhalten.
Hier ist ein ziemlich einfaches Beispiel, wie Sie nur mit Zeitstempel speichern können:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
table_name = dt << get name;
timestamp = Today();
save_path = Eval Insert("$temp\^timestamp^_^table_name^.jmp");
dt << Save(save_path);
Open("$temp");
Beim Speichern in einem anderen Ordner können Sie einfach zwei Speichervorgänge mit unterschiedlichen Pfaden und Dateinamen durchführen oder die Datei kopieren.
Betreff: Speichern und Überschreiben von DateienSie können verwenden
rc = Copy File( from, to );
um die Datei zu kopieren.Suchen Sie im Skripteditor nach Details und einem guten Beispiel für die Kopierdatei
Sobald Sie die Datei in Ihr gewünschtes Unterverzeichnis kopiert haben, können Sie sie einfach verwenden
data table("table name") << Save ("file path" );
um die neue Tabelle zu speichern.Im Dateipfad geben Sie den Pfad und den vollständigen Dateinamen inklusive der Endung .jmp an.
Betreff: Speichern und Überschreiben von DateienDanke Jthi!
Das Skript funktioniert hervorragend, außer dass der Zeitstempel Werte wie "3727386650" vor dem Tabellennamen einträgt. Ich habe versucht, einen Zeitstempel zu erstellen:
timestamp = As Date( Today() );
Das Datum und die Uhrzeit wurden ausgefüllt, aber das Skript konnte die Datei nicht speichern.
Betreff: Speichern und Überschreiben von DateienToday() generiert einen Zeitstempel, aber er ist im JMP-Datumszeitwert Verwenden von Datumsangaben, Uhrzeiten, Datumszeiten und Dauer in JMP .
Wenn Sie AsDate() verwenden, enthält es höchstwahrscheinlich einige Zeichen, die in Dateinamen nicht zulässig sind. Welche Art von Format möchten Sie? Sie können es aus der datetime erstellen, die Today() Ihnen gibt, sehen Sie sich den Scripting Index und den Date Time-Teil an:

Von dort aus finden Sie Funktionen wie Year(), Month(), Day(), Hour(), Minute() und Second() mit diesen (kombiniert mit Char() oder Eval Insert() können Sie die robusteste Version davon erstellen den gewünschten Zeitstempel.
Bearbeiten:
Dies ist ein bisschen langer Code, aber er sollte ziemlich robust sein und Ihnen im Grunde die formatierte Zeichenfolge YYYYMMDD_hhmmss geben
Names Default To Here(1);
cur_time = Today();
yyyy = char(Year(cur_time));
//add spanning
mm = char(Month(cur_time));
mm = Substr("00", 1, 2 - Length(mm)) || mm;
dd = char(Day(cur_time));
dd = Substr("00", 1, 2 - Length(dd)) || dd;
hh = char(Hour(cur_time));
hh = Substr("00", 1, 2 - Length(hh)) || hh;
min = char(Minute(cur_time));
min = Substr("00", 1, 2 - Length(min)) || min;
ss = char(Second(cur_time));
ss = Substr("00", 1, 2 - Length(ss)) || ss;
timestamp_str = yyyy || mm || dd ||"_"|| hh || min || ss;