文件保存和覆盖我有一个 JSL 脚本,可以打开和关闭薮表。 当它们打开时,它将文档合并到一个文件中,然后将文件保存到本地文件夹中。 该脚本当前会覆盖本地文件夹中的现有文件。 是否有一个脚本可以在每次运行脚本时在子文件夹中填充一个新文件(理想情况下,通过将创建时间戳标记到标题“Merged”上来区分),而不是覆盖当前文件? 或者更好的是,如果当前脚本被覆盖就可以了,但是每次运行脚本时都会将其副本保存到子文件夹中? 有点像我可以查看的积压日志,但其他人只能看到“实时”版本
@txnelson ,我看到你在这里帮助过类似的事情: https://community.jmp.com/t5/Discussions/Save-new-graph-instead-of-overwriting-the-already-saved-ones/mp/54078#M30546
也许这是一个变种?
数据表脚本视窗回复:文件保存和覆盖只需一点点脚本,这两种选择都是可能的。 您可以使用 Today() 轻松获取“时间戳”。
这是一个相当简单的示例,您如何使用时间戳进行保存:
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");
通过保存到其他文件夹,您可以使用不同的路径和文件名进行两次保存或复制文件。
回复:文件保存和覆盖您可以使用
rc = Copy File( from, to );
复制文件。在脚本编辑器中查看详细信息以及复制文件的一个很好的示例
将文件复制到所需的子目录后,您可以简单地使用
data table("table name") << Save ("file path" );
保存新表。在文件路径中,您提供路径和完整的文件名,包括 .jmp 扩展名。
回复:文件保存和覆盖谢谢jthi!
该脚本运行良好,除了时间戳在表名之前填充诸如“3727386650”之类的值。 我尝试制作时间戳:
timestamp = As Date( Today() );
填充日期和时间,但脚本无法保存文件。
回复:文件保存和覆盖Today() 确实生成时间戳,但它在 JMP 日期时间值中在 JMP 中使用日期、时间、日期时间和持续时间.
如果您使用 AsDate() 它很可能会有一些文件名中不允许出现的字符。 你想要什么类型的格式? 您可以从 Today() 给您的日期时间构建它,查看 Scripting Index 和 Date Time 部分:

从那里您可以找到诸如 Year()、Month()、Day()、Hour()、Minute() 和 Second() 之类的函数(与 Char() 或 Eval Insert() 结合使用,您可以构建最强大的版本你想要的时间戳。
编辑:
这是一个有点长的代码,但它应该相当健壮,基本上给你 YYYYMMDD_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;