Abrufen von Informationen mit Datumsbedingung: Dateiname in die Liste aufnehmen, wenn er größer als ein angegebenes Datum und eine bestimmte Uhrzeit istHallo,
Ich versuche, die Liste der Dateinamen in einem Verzeichnis mit einer bestimmten Bedingung abzurufen, wenn es sich um 1) ein ZIP-Archiv handelt und 2) das Erstellungsdatum größer als JJJJ/MM/TT ist. Unten ist mein Skript. Meine Frage
1) Es lief ohne Fehler, gab aber keine leere Liste zurück. Ich bin mir nicht sicher, was das Problem ist (vielleicht das Datum).
2) Wie kann ich das Ausgabeformat für das Erstellungsdatum () auf jjjj/mm/tt hh:mm:ss einstellen?
3) Es dauert lange, den Pfad2 zu durchlaufen, da ich über 100.000 ZIP-Ordner habe. Gibt es einen anderen schnelleren Weg, dies zu tun?
Danke
path2 = "C:\Users\test\;
filelist = files in directory (path2);
lst2 = {};
For(i=1, i<= N items(filelist), i++,
If( Contains(filelist[i], ".zip") & Creation Date( path2||filelist[i]) > 2022-10-12T08:00:00, Insert Into( lst2, filelist[i] )
),
);
InhaltsorganisationQualitäts- und VerfahrenstechnikBetreff: Informationen mit Datumsbedingung abrufen: Dateiname in die Liste aufnehmen, wenn er größer als ein angegebenes Datum und eine bestimmte Uhrzeit istSie könnten dies versuchen ... es sollte es beschleunigen
Names Default To Here( 1 );
path2 = "C:\Users\test\";
filelist = Files In Directory( path2 );
For( i = N Items( filelist ), i >= 1, i--,
If( Right( filelist[i], 4 ) != ".zip",
Remove From( filelist, i, 1 )
)
);
lst2 = {};
For( i = 1, i <= N Items( filelist ), i++,
If( Creation Date( path2 || filelist[i] ) > informat("2022-10-12T08:00:00", "yyyy-mm-ddThh:mm:ss"),
Insert Into( lst2, filelist[i] )
)
);Betreff: Informationen mit Datumsbedingung abrufen: Dateiname in die Liste aufnehmen, wenn er größer als ein angegebenes Datum und eine bestimmte Uhrzeit istHallo Jim, danke. das hat das Problem behoben. Es dauert jedoch zu lange, wenn ein Ordner zu viele Dateien zum Durchsuchen enthält. Unten sind die neuen Schritte aufgeführt, die ich ausführen muss, damit es beim nächsten Mal, wenn ich nur die neuesten Dateien abrufen möchte, nicht so lange dauert wie bei der Verwendung von Datum/Uhrzeit als Filter (oben). Ich bin mir nicht sicher, ob es ein effektiver Weg ist, dies zu tun. Gibt es eine bessere Möglichkeit, die neuesten Dateien in kürzerer Zeit zu extrahieren?
1) Holen Sie sich beim ersten Mal die gesamte Dateiliste im definierten Ordner ( Dateien im Verzeichnis (Verzeichnis) ). In einer Tabellenspalte „T1“ gespeichert (nur einmal ausführen)
2) Nach einiger Zeit werden die neuesten Dateien demselben Ordner hinzugefügt. Das Skript wechselt in denselben Ordner und übernimmt die gesamte Dateiliste als „newlist“ (newlist = Dateien im Verzeichnis (Verzeichnis) .
3) Spalte in Tabelle 1) als Liste abrufen, dann durchlaufen, um die Elemente aus der neuen Liste zu entfernen (ich verwende Remove From ()).
4) Machen Sie alles Notwendige auf der neuen Liste.
5) Neue Liste in Tabelle in 1) anhängen.
6) Wiederholen Sie die Schritte 2) bis 5) das nächste Mal, wenn ich erneut die neuesten Dateien abrufen muss.
Irgendein Vorschlag?
Betreff: Informationen mit Datumsbedingung abrufen: Dateiname in die Liste aufnehmen, wenn er größer als ein angegebenes Datum und eine bestimmte Uhrzeit istIn dem von Ihnen bereitgestellten Beispiel fehlt ein doppeltes Anführungszeichen in der Zeile path2 =, und außerdem scheint die Zeitreferenz von JMP nicht verarbeitet zu werden. Wenn Sie sie also in eine Informat()-Funktion ändern, können Sie sicherstellen, dass die Die JMP-Datums-/Uhrzeitreferenz wird korrekt interpretiert.
names default to here(1);
path2 = "C:\Users\test\";
filelist = Files In Directory( path2 );
lst2 = {};
For( i = 1, i <= N Items( filelist ), i++,
If( Contains( filelist[i], ".zip" ) & Creation Date( path2 || filelist[i] ) > informat("2022-10-12T08:00:00", "yyyy-mm-ddThh:mm:ss"),
Insert Into( lst2, filelist[i] )
)
);