文件保存和覆蓋我有一個 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");
儲存到其他資料夾時,您可以使用不同的路徑和檔案名稱進行兩次儲存或複製檔案。