文件保存和覆盖我有一个 JSL 脚本,可以打开和关闭多个工作表。 当它们打开时,它将文档合并到一个文件中,然后将该文件保存到本地文件夹中。 该脚本当前会覆盖本地文件夹中的现有文件。 是否有一个脚本会在每次运行脚本时在子文件夹中填充一个新文件(理想情况下,通过将创建时间戳标记到标题“合并”上来区分),而不是覆盖当前文件? 或者更好的是,如果当前的文件被覆盖也没关系,但每次脚本运行时都会将其副本保存到子文件夹中? 有点像积压日志,我可以查看,但其他人只能看到“实时”版本
@tx尼尔森,我见过你在这里提供类似的帮助:保存新图表而不是覆盖已保存的图表
也许这是这个的一个变体?
内容组织数据混合和清理视窗回复:文件保存和覆盖效果非常好! 谢谢你!
回复:文件保存和覆盖Today() 确实生成时间戳,但它是在 JMP 日期时间值中在 JMP 中使用日期、时间、日期时间和持续时间。
如果您使用 AsDate(),它很可能会包含一些文件名中不允许的字符。 您想要什么类型的格式? 您可以根据 Today() 提供的日期时间构建它,请查看脚本索引和日期时间部分:

从那里你可以找到像 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;
回复:文件保存和覆盖谢谢jthi!
该脚本运行良好,只是时间戳在表名称之前填充了诸如“3727386650”之类的值。 我尝试制作时间戳:
timestamp = As Date( Today() );
填充日期和时间,但脚本无法保存文件。
回复:文件保存和覆盖您可以使用
rc = Copy File( from, to );
复制文件。在脚本编辑器中查看详细信息和复制文件的一个很好的示例
将文件复制到所需的子目录后,您可以简单地使用
data table("table name") << Save ("file path" );
保存新表。在文件路径中,您提供路径和完整的文件名,包括 .jmp 扩展名。
回复:文件保存和覆盖只需编写少量脚本即可实现这两种选择。 您可以使用 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");
保存到其他文件夹时,您可以使用不同的路径和文件名进行两次保存或复制文件。