Hola a todos,
Estoy trabajando con JSL para recopilar y filtrar archivos de un directorio.
La lógica básica de filtrado (nombre, extensión, tamaño) funciona correctamente, pero estoy teniendo problemas al intentar agregar un filtro de fecha de creación fiable.
Este código encuentra correctamente archivos .txt no vacíos cuyos nombres contienen "resultado":
</CODE></PRE>
<P>¿Cuál es la forma recomendada o fiable en JSL para filtrar archivos por fecha de creación en Windows cuando se combina Files In Directory con Filter Each?<BR /><BR /> Gracias,</P>
<BR />
</LINGO-BODY>
<LINGO-LABS id="lingo-labs-944809" slang="en-US" mode="CREATE">
<LINGO-LABEL>Automatización y secuencias de comandos</LINGO-LABEL>
<LINGO-LABEL>Acceso a los datos</LINGO-LABEL>
</LINGO-LABS>
<LINGO-SUB id="lingo-sub-944828" slang="en-US" mode="CREATE" translate="no">Re: JSL: Filtrar archivos por fecha de creación con Archivos en directorio y Filtrar cada uno</LINGO-SUB>
<LINGO-BODY id="lingo-body-944828" slang="en-US" mode="CREATE">
<P>Usar <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">fecha de creación()</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>Es difícil dar alguna sugerencia sobre con qué combinarlo, ya que no has proporcionado ninguna idea sobre la lógica que estás siguiendo.</P>
</LINGO-BODY>
<LINGO-SUB id="lingo-sub-944864" slang="en-US" mode="CREATE" translate="no">Re: JSL: Filtrar archivos por fecha de creación con Archivos en directorio y Filtrar cada uno</LINGO-SUB>
<LINGO-BODY id="lingo-body-944864" slang="en-US" mode="CREATE">
<P>Gracias Jarmo, permíteme aclarar.</P>
<P>Lo que intento hacer es filtrar los archivos por un rango de fechas de creación, además de los otros filtros (por ejemplo, archivos creados entre el 1 de enero de 2026 y el 31 de marzo de 2026).</P>
<P>He intentado usar Creation Date() de varias maneras (incluidos ejemplos de la comunidad de usuarios), pero no estaba seguro de cómo combinarlo con Files In Directory() y Filter Each(), por lo que ninguno de ellos funcionó.</P>
<P>¿Podría mostrar un ejemplo de cómo se debe hacer esto correctamente?<BR /><BR /> -Aron</P>
</LINGO-BODY>
<LINGO-SUB id="lingo-sub-944865" slang="en-US" mode="CREATE" translate="no">Re: JSL: Filtrar archivos por fecha de creación con Archivos en directorio y Filtrar cada uno</LINGO-SUB>
<LINGO-BODY id="lingo-body-944865" slang="en-US" mode="CREATE">
<P>Algo como:</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];
...
Construye tus fechas (de diferentes maneras, consulta las funciones de fecha y hora: Referencia de sintaxis JSL > Funciones, operadores y mensajes JSL > Funciones de fecha y hora ), usa la ruta del archivo con la fecha de creación (ten en cuenta si tu carpeta termina con "/" o no al construir la ruta) y agrega una comparación.
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
);