大家好,
我正在使用 JSL 從目錄中收集和篩選文件。
基本篩選邏輯(名稱、副檔名、大小)運作正常,但在嘗試新增可靠的建立日期篩選器時遇到了問題。
這段程式碼可以正確找到檔案名稱包含「result」的非空.txt檔案:
</CODE></PRE>
<P>在 Windows 系統上,使用 JSL 將 Files In Directory 和 Filter Each 結合使用時,按建立日期篩選檔案的建議或可靠方法是什麼?<BR /><BR />謝謝,</P>
<BR />
</LINGO-BODY>
<LINGO-LABS id="lingo-labs-944809" slang="en-US" mode="CREATE">
<LINGO-LABEL>自動化和腳本編寫</LINGO-LABEL>
<LINGO-LABEL>資料存取</LINGO-LABEL>
</LINGO-LABS>
<LINGO-SUB id="lingo-sub-944828" slang="en-US" mode="CREATE" translate="no">回覆:JSL:依建立日期篩選目錄中的檔案並逐一篩選</LINGO-SUB>
<LINGO-BODY id="lingo-body-944828" slang="en-US" mode="CREATE">
<P>使用<A href="https://help.jmp.com/help?keyword=JSL%20Creation%20Date&lang=en&os=win&source=application&version=19.1.1" target="_blank" rel="noopener noreferrer">建立日期()</A></P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_0-1777384067549.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1777384067549.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1777384067549.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1777384067549.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="jthi_0-1777384067549.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/101357i40F649504D631A24/jthi_0-1777384067549.png" role="button" title="jthi_0-1777384067549.png" alt="jthi_0-1777384067549.png" /></span></SPAN></SPAN></SPAN></SPAN></P>
<P>由於你沒有提供任何關於你想要表達的邏輯的想法,所以很難給出任何關於如何搭配的建議。</P>
</LINGO-BODY>
<LINGO-SUB id="lingo-sub-944864" slang="en-US" mode="CREATE" translate="no">回覆:JSL:依建立日期篩選目錄中的檔案並逐一篩選</LINGO-SUB>
<LINGO-BODY id="lingo-body-944864" slang="en-US" mode="CREATE">
<P>謝謝 Jarmo——讓我解釋一下。</P>
<P>我想要做的是,在其他篩選條件的基礎上,按建立日期範圍篩選檔案(例如,在 2026-01-01 到 2026-03-31 之間建立的檔案)。</P>
<P>我嘗試過用多種方式使用 Creation Date()(包括使用者社群中的範例),但我不知道如何將其與 Files In Directory() 和 Filter Each() 結合使用,因此這些方法都行不通。</P>
<P>請您舉例說明正確的做法是什麼?<BR /><BR /> -阿倫</P>
</LINGO-BODY>
<LINGO-SUB id="lingo-sub-944865" slang="en-US" mode="CREATE" translate="no">回覆:JSL:依建立日期篩選目錄中的檔案並逐一篩選</LINGO-SUB>
<LINGO-BODY id="lingo-body-944865" slang="en-US" mode="CREATE">
<P>例如:</P>
<PRE><CODE class=" language-jsl">Names Default To Here(1);
folderPath = "C:/Users/.../test";
fileListOrig = Files In Directory(folderPath, Recursive(1));
fileList = Filter Each({v, i}, fileListOrig,
Contains(v, "result") &
Ends With(v, ".txt") &
creation date(v) < informat("01052026", "MMDDYYYY") &
creation date(v) >= informat("01052025", "MMDDYYYY") &
File Size(folderPath || v) > 0
);
// Data Cleaning
For( i = 1, i <= N Items( fileList ), i++,
fileName = fileList[i];
...Names Default To Here(1);
folderPath = "C:/Users/.../test";
fileListOrig = Files In Directory(folderPath, Recursive(1));
fileList = Filter Each({v, i}, fileListOrig,
Contains(v, "result") &
Ends With(v, ".txt") &
File Size(folderPath || v) > 0
);
// Data Cleaning
For( i = 1, i <= N Items( fileList ), i++,
fileName = fileList[i];
...
建置日期(有多種方法,請參閱日期時間函數: JSL 語法參考 > JSL 函數、運算子和訊息 > 日期和時間函數),使用包含建立日期的檔案路徑(建置路徑時請注意資料夾是否以「/」結尾),並新增比較。
Names Default To Here(1);
folder = Convert File Path("$SAMPLE_DATA");
sdate = Date DMY(1,1,2025);
edate = Date DMY(31,3,2026);<BR />
flist = Files In Directory(folder, Recursive(1));
filtered_files = Filter Each({filename}, flist,
Contains(filename, "Data") &
Ends With(filename, ".jmp") &
File Size(folder || filename) > 0 &
sdate <= Creation Date(folder || filename) <= edate
);