Sauvegarde et écrasement de fichiersJ'ai un script JSL qui ouvre et ferme les feuilles de serveur. Lorsqu'ils sont ouverts, il fusionne les documents en un seul fichier, puis enregistre le fichier dans un dossier local. Le script écrase actuellement le fichier existant dans le dossier local. Existe-t-il un script qui remplirait un nouveau fichier dans un sous-dossier (idéalement, distingué en marquant l'horodatage de création sur le titre « Fusionné ») chaque fois que le script est exécuté, au lieu d'écraser le script actuel ? Ou mieux encore, ce n'est pas grave si le script actuel est écrasé, mais une copie de celui-ci est enregistrée dans un sous-dossier à chaque fois que le script est exécuté ? Un peu comme un historique que je peux consulter mais les autres ne peuvent voir que la version "live"
@txnelson , je vous ai vu aider ici avec quelque chose de similaire : Enregistrez un nouveau graphique au lieu d'écraser ceux déjà enregistrés
C'est peut-être une variante de ceci ?
Organisation du contenuMélange et nettoyage des donnéesles fenêtresRe : Sauvegarde et écrasement de fichiersA fonctionné à merveille ! Merci!
Re : Sauvegarde et écrasement de fichiersToday() génère un horodatage, mais il est dans la valeur date/heure JMP Utilisation de dates, d'heures, de dates-heures et de durées dans JMP .
Si vous utilisez AsDate(), il contiendra probablement des caractères qui ne sont pas autorisés dans les noms de fichiers. Quel type de format souhaitez-vous ? Vous pouvez le construire à partir de la datetime Today() que vous donne, consultez la partie Scripting Index et Date Time :

À partir de là, vous pouvez trouver des fonctions comme Year(), Month(), Day(), Hour(), Minute() et Second() avec celles-ci (en combinaison avec Char() ou Eval Insert(), vous pouvez créer la version la plus robuste de l'horodatage souhaité.
Modifier:
C'est un code un peu long, mais il devrait être assez robuste et vous donner essentiellement une chaîne au format AAAAMMJJ_hhmmss.
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;
Re : Sauvegarde et écrasement de fichiersMerci jthi!
Le script fonctionne très bien, sauf que l'horodatage renseigne des valeurs telles que "3727386650" avant le nom de la table. J'ai essayé de créer un horodatage :
timestamp = As Date( Today() );
Pour renseigner la date et l'heure, mais le script n'a pas pu enregistrer le fichier.
Re : Sauvegarde et écrasement de fichiersVous pouvez utiliser
rc = Copy File( from, to );
pour copier le fichier.Recherchez dans l'éditeur de script les détails et un bon exemple sur le fichier de copie.
Une fois que vous copiez le fichier dans le sous-répertoire souhaité, vous pouvez simplement utiliser
data table("table name") << Save ("file path" );
pour enregistrer la nouvelle table.Dans le chemin du fichier, vous indiquez le chemin et le nom complet du fichier, y compris l'extension .jmp.
Re : Sauvegarde et écrasement de fichiersLes deux options sont possibles avec un peu de script. Vous pouvez facilement obtenir un « horodatage » en utilisant Today().
Voici un exemple assez simple de la manière dont vous pouvez simplement enregistrer avec l'horodatage :
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");
En enregistrant dans un autre dossier, vous pouvez simplement effectuer deux sauvegardes avec des chemins et des noms de fichiers différents ou copier le fichier.