大家好,
我正在使用 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
);