jsl - 如何開啟具有特定命名約定的最新檔案?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,
如何編寫 jsl 腳本來開啟包含特定命名約定的目錄中的最新檔案? 我有以下程式碼將開啟目錄中的最新檔案:
(
OpenNewestFile = 目錄中的檔案( "C:\users\me\MyDocuments\" );
{t,p}={0,1};
for(i=1, i <= n 項(OpenNewestFile),i++,
ti=最後修改日期("C:\users\me\MyDocuments\" || OpenNewestFile );
如果(ti>t,t+ti;p=i));
dt1 = Open("C:\users\me\MyDocuments\"||OpenNewestFile
)
);
每天一次,一個新檔案會寫入目錄,名稱類似“FD_History_2016_08_27_17_36.csv”
如何修改此腳本以查找最新的“FD_History_”檔案並打開它,同時忽略目錄中的任何其他檔案?
先致謝!
回覆:jsl - 如何開啟具有特定命名約定的最新檔案?此範例使用正規表示式來查看名稱是否以 .jmp 結尾($ 與行尾相符)或以字母 a 開頭(^ 與行首相符)。如果匹配失敗,則正規表示式將傳回缺失值。RemoveFrom 函數從清單中刪除有問題的項目。for 迴圈向後執行,因此刪除的項目不會更改清單中尚未檢查的部分。(當刪除一個項目時,後續項目的索引會發生變化。)
NULL 告訴正規表示式不要取代符合的文字; IGNORECASE 告訴正規表示式 Jmp 和 jmp 應該要匹配。
x=filesindirectory("$desktop");
for(i=nitems(x), i>= 1, i--,
如果(缺少(正規表示式(x , “.Jmp$|^a” ,NULL,IGNORECASE)), 從(x,i) 刪除)
);
顯示(x);
x = {"animated.gif", "stories.jmp", "無標題 3.jmp"};
您可以將最後修改日期建置到此循環中,或將其保留在本次循環之後的單獨循環中。
回覆:jsl - 如何開啟具有特定命名約定的最新檔案?你好,
我遇到了類似的問題,但在這種情況下,資料夾名稱每個工作週都會變更。
資料夾結構如下:
\\themainfolder\ 202503 \PPT_ 12345 \subfolders\indicators.xlsx。
主資料夾包含 3 或 4 個「YYYYWW」子資料夾 - 例如 202503、202504、202505,並且與 PPT_ 12345資料夾關聯的編號每週都是隨機的。
我設法獲取了所有 YYYYWW 子資料夾 {“202512”、“202513”、“202514”} 的列表,但我需要選擇最新的資料夾(最大數量),在本例中為“202514”。
然後我需要只選擇 PPT 資料夾(還有其他子資料夾,但只有一個名為“PPT_...”)。
你能幫我一下嗎?
謝謝
回覆:jsl - 如何開啟具有特定命名約定的最新檔案?allfiles = Files In Directory( "c:/" );
show(N Items( allfiles )); // 15 or so
dirlist = Filter Each( {f}, allfiles, Is Directory( "c:/" || f ) );
show(N Items( dirlist )); // 12 or so
sorted = Reverse( Sort List( dirlist ) ); // biggest first
filtered = Filter Each( {f}, sorted, Starts With( f, "Prog" ) );
// {"ProgramData", "Program Files (x86)", "Program Files"}
編輯:新增路徑
更多:JMP 16 結果,見上文。較新的 JMP 版本可能能夠更好地處理 c:/ - 預先過濾您不想看到的檔案系統物件。但想法是一樣的,使用 JSL 函數保留您想要的內容並過濾掉其餘內容。反向排序應該將日期放在位置 1。
回覆:jsl - 如何開啟具有特定命名約定的最新檔案?謝謝你,克雷格。抱歉回覆晚了。效果很好。我遇到的唯一缺點是該資料夾包含許多子資料夾,並且目錄中的檔案功能需要很長時間才能運行。無論如何謝謝你的幫忙。