Salut tout le monde,
Je travaille avec JSL pour collecter et filtrer des fichiers provenant d'un répertoire.
La logique de filtrage de base (nom, extension, taille) fonctionne correctement, mais je rencontre des problèmes lorsque j'essaie d'ajouter un filtre de date de création fiable.
Ce code trouve correctement les fichiers .txt non vides dont le nom contient « result » :
</CODE></PRE>
<P>Quelle est la méthode recommandée ou fiable en JSL pour filtrer les fichiers par date de création sous Windows en combinant Files In Directory avec Filter Each ?<BR /><BR /> Merci,</P>
<BR />
</LINGO-BODY>
<LINGO-LABS id="lingo-labs-944809" slang="en-US" mode="CREATE">
<LINGO-LABEL>Automatisation et scriptage</LINGO-LABEL>
<LINGO-LABEL>Accès aux données</LINGO-LABEL>
</LINGO-LABS>
<LINGO-SUB id="lingo-sub-944828" slang="en-US" mode="CREATE" translate="no">Re : JSL : Filtrage des fichiers par date de création avec Files In Directory et Filter Each</LINGO-SUB>
<LINGO-BODY id="lingo-body-944828" slang="en-US" mode="CREATE">
<P>Utiliser <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">la date de création()</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>Il est difficile de vous suggérer avec quoi le combiner car vous n'avez donné aucune indication sur la logique que vous souhaitez mettre en œuvre.</P>
</LINGO-BODY>
<LINGO-SUB id="lingo-sub-944864" slang="en-US" mode="CREATE" translate="no">Re : JSL : Filtrage des fichiers par date de création avec Files In Directory et Filter Each</LINGO-SUB>
<LINGO-BODY id="lingo-body-944864" slang="en-US" mode="CREATE">
<P>Merci Jarmo — permettez-moi de préciser.</P>
<P>Ce que j'essaie de faire, c'est de filtrer les fichiers par une plage de dates de création en plus des autres filtres (par exemple, les fichiers créés entre le 1er janvier 2026 et le 31 mars 2026).</P>
<P>J'ai essayé d'utiliser Creation Date() de plusieurs manières (y compris des exemples de la communauté des utilisateurs), mais je ne savais pas comment la combiner avec Files In Directory() et Filter Each(), c'est pourquoi aucune de ces solutions n'a fonctionné.</P>
<P>Pourriez-vous me montrer un exemple de la manière dont cela devrait être fait correctement ?<BR /><BR /> -Aron</P>
</LINGO-BODY>
<LINGO-SUB id="lingo-sub-944865" slang="en-US" mode="CREATE" translate="no">Re : JSL : Filtrage des fichiers par date de création avec Files In Directory et Filter Each</LINGO-SUB>
<LINGO-BODY id="lingo-body-944865" slang="en-US" mode="CREATE">
<P>Quelque chose comme :</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];
...
Construisez vos dates (différentes méthodes sont possibles, voir les fonctions de date et d'heure : Référence de syntaxe JSL > Fonctions, opérateurs et messages JSL > Fonctions de date et d'heure ), utilisez le chemin d'accès au fichier avec sa date de création (notez si votre dossier se termine par « / » ou non lors de la construction du chemin) et ajoutez une comparaison.
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
);