Hi all,
I am working with JSL to collect and filter files from a directory.
The basic filtering logic (name, extension, size) works correctly, but I am running into issues when trying to add a reliable Creation Date filter.
This code correctly finds non‑empty .txt files whose names contain "result":
</CODE></PRE>
<P>What is the recommended or reliable way in JSL to filter files by creation date on Windows when combining Files In Directory with Filter Each?<BR /><BR />Thanks,</P>
<P> </P></LINGO-BODY><LINGO-LABS id="lingo-labs-944809" slang="en-US" mode="CREATE"><LINGO-LABEL>Automation and Scripting</LINGO-LABEL><LINGO-LABEL>Data Access</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-944828" slang="en-US" mode="CREATE" translate="no">Re: JSL: Filtering files by Creation Date with Files In Directory and Filter Each</LINGO-SUB><LINGO-BODY id="lingo-body-944828" slang="en-US" mode="CREATE"><P>Use <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">Creation Date()</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>Difficult to give any suggestion on what to combine it with as you didn't provide any ideas of the logic you are going for.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-944864" slang="en-US" mode="CREATE" translate="no">Re: JSL: Filtering files by Creation Date with Files In Directory and Filter Each</LINGO-SUB><LINGO-BODY id="lingo-body-944864" slang="en-US" mode="CREATE"><P>Thanks Jarmo — let me clarify.</P>
<P>What I am trying to do is filter files by a creation date range on top of the other filters (for example, files created between 2026‑01‑01 and 2026‑03‑31).</P>
<P>I have tried using Creation Date() in several ways (including examples from the User Community), but I was not sure how to combine it with Files In Directory() and Filter Each(), hence none of those worked.</P>
<P>Could you please show an example of how this should be done correctly?<BR /><BR />-Aron</P></LINGO-BODY><LINGO-SUB id="lingo-sub-944865" slang="en-US" mode="CREATE" translate="no">Re: JSL: Filtering files by Creation Date with Files In Directory and Filter Each</LINGO-SUB><LINGO-BODY id="lingo-body-944865" slang="en-US" mode="CREATE"><P>Something like:</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];
...
Build your dates (different ways, see date-time functions: JSL Syntax Reference > JSL Functions, Operators, and Messages > Date and Time Functions ), use file path with creation date (note if your folder ends with "/" or not when building the path) and add comparison
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
);