Hallo zusammen,
Ich arbeite mit JSL, um Dateien aus einem Verzeichnis zu sammeln und zu filtern.
Die grundlegende Filterlogik (Name, Dateiendung, Größe) funktioniert einwandfrei, aber ich stoße auf Probleme beim Hinzufügen eines zuverlässigen Filters für das Erstellungsdatum.
Dieser Code findet korrekt nicht leere .txt-Dateien, deren Namen "result" enthalten:
</CODE></PRE>
<P>Welche ist die empfohlene oder zuverlässige Methode in JSL, um Dateien unter Windows nach Erstellungsdatum zu filtern, wenn man „Files In Directory“ mit „Filter Each“ kombiniert?<BR /><BR /> Danke,</P>
<BR />
</LINGO-BODY>
<LINGO-LABS id="lingo-labs-944809" slang="en-US" mode="CREATE">
<LINGO-LABEL>Automatisierung und Skripterstellung</LINGO-LABEL>
<LINGO-LABEL>Datenzugriff</LINGO-LABEL>
</LINGO-LABS>
<LINGO-SUB id="lingo-sub-944828" slang="en-US" mode="CREATE" translate="no">Betreff: JSL: Dateien nach Erstellungsdatum filtern mit „Dateien im Verzeichnis“ und „Jede Datei filtern“</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">Erstellungsdatum verwenden()</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 ist schwierig, Vorschläge zu machen, womit man es kombinieren könnte, da Sie keine Ideen bezüglich der zugrunde liegenden Logik genannt haben.</P>
</LINGO-BODY>
<LINGO-SUB id="lingo-sub-944864" slang="en-US" mode="CREATE" translate="no">Betreff: JSL: Dateien nach Erstellungsdatum filtern mit „Dateien im Verzeichnis“ und „Jede Datei filtern“</LINGO-SUB>
<LINGO-BODY id="lingo-body-944864" slang="en-US" mode="CREATE">
<P>Danke Jarmo – ich möchte das kurz erläutern.</P>
<P>Ich möchte zusätzlich zu den anderen Filtern auch Dateien nach einem Erstellungsdatumsbereich filtern (z. B. Dateien, die zwischen dem 1. Januar 2026 und dem 31. März 2026 erstellt wurden).</P>
<P>Ich habe versucht, Creation Date() auf verschiedene Arten zu verwenden (einschließlich Beispielen aus der Benutzer-Community), war mir aber nicht sicher, wie ich es mit Files In Directory() und Filter Each() kombinieren sollte, daher hat keine dieser Methoden funktioniert.</P>
<P>Könnten Sie bitte ein Beispiel zeigen, wie dies korrekt durchgeführt werden sollte?<BR /><BR /> -Aron</P>
</LINGO-BODY>
<LINGO-SUB id="lingo-sub-944865" slang="en-US" mode="CREATE" translate="no">Betreff: JSL: Dateien nach Erstellungsdatum filtern mit „Dateien im Verzeichnis“ und „Jede Datei filtern“</LINGO-SUB>
<LINGO-BODY id="lingo-body-944865" slang="en-US" mode="CREATE">
<P>Etwa so:</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];
...
Erstellen Sie Ihre Datumsangaben (verschiedene Methoden, siehe Datums- und Zeitfunktionen: JSL-Syntaxreferenz > JSL-Funktionen, Operatoren und Nachrichten > Datums- und Zeitfunktionen ), verwenden Sie den Dateipfad mit Erstellungsdatum (beachten Sie beim Erstellen des Pfades, ob Ihr Ordner mit "/" endet) und fügen Sie einen Vergleich hinzu.
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
);