jsl - Comment ouvrir le fichier le plus récent avec une convention de nommage spécifique?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut à tous,
Comment puis-je script jsl pour ouvrir le fichier le plus récent dans un répertoire qui contient une convention de nommage spécifique? J'ai le code suivant qui ouvrira le fichier le plus récent du répertoire:
(
OpenNewestFile = Fichiers du répertoire ("C: \ users \ me \ MyDocuments \");
{t, p} = {0,1};
pour (i = 1, i <= n éléments (OpenNewestFile), i ++,
ti = Date de dernière modification ("C: \ utilisateurs \ me \ MesDocuments \" || OpenNewestFile )
Si (ti> t, t + ti; p = i));
dt1 = Open ("C: \ users \ me \ MyDocuments \" || OpenNewestFile
)
)
Une fois par jour, un nouveau fichier est écrit dans le répertoire avec un nom du type "FD_History_2016_08_27_17_36.csv".
Comment puis-je modifier ce script pour rechercher le fichier "FD_History_" le plus récent et l'ouvrir tout en ignorant les autres fichiers du répertoire?
Merci d'avance!
Re: jsl - Comment ouvrir le fichier le plus récent avec une convention de nommage spécifique?Cet exemple utilise regex pour voir si le nom se termine par .jmp (le $ correspond à la fin de la ligne) ou commence par la lettre a (le ^ correspond au début de la ligne). Regex renvoie une valeur manquante si la correspondance échoue. La fonction RemoveFrom supprime les éléments incriminés de la liste. La boucle for fonctionne à l'envers de sorte que les éléments supprimés ne modifient pas la partie de la liste qui n'a pas encore été examinée. (Lorsqu'un élément est supprimé, les index des éléments suivants sont modifiés.)
NULL indique à regex de ne pas remplacer le texte correspondant; IGNORECASE indique à regex que Jmp et jmp doivent correspondre.
x = répertoire_fichiers ("$ desktop");
pour (i = nitems (x), i> = 1, i--,
if (ismissing (regex (x , ".Jmp $ | ^ a" , NULL, IGNORECASE)), enlever de (x, i))
)
show (x);
x = {"animated.gif", "stories.jmp", "Sans titre 3.jmp"};
Vous pouvez créer la dernière date de modification dans cette boucle ou la conserver dans une boucle séparée après celle-ci.
Re: jsl - Comment ouvrir le fichier le plus récent avec une convention de nommage spécifique ?Salut,
J'ai un problème similaire mais dans ce cas, le nom du dossier change par semaine de travail.
La structure du dossier est :
\\themainfolder\ 202503 \PPT_ 12345 \sous-dossiers\indicateurs.xlsx.
Le dossier principal contient 3 ou 4 sous-dossiers « YYYYWW » - par exemple 202503, 202504, 202505 et le numéro associé au dossier PPT_12345 est aléatoire chaque semaine.
J'ai réussi à obtenir une liste de tous les sous-dossiers YYYYWW {"202512", "202513", "202514"} mais je dois sélectionner le dossier le plus récent (nombre maximum), dans ce cas "202514".
Ensuite, je dois sélectionner uniquement le dossier PPT (il existe d'autres sous-dossiers mais il n'y en a qu'un seul appelé "PPT_...").
Pourriez-vous m'aider ici ?
Merci
Re: jsl - Comment ouvrir le fichier le plus récent avec une convention de nommage spécifique ?allfiles = Files In Directory( "c:/" );
show(N Items( allfiles )); // 15 or so
dirlist = Filter Each( {f}, allfiles, Is Directory( "c:/" || f ) );
show(N Items( dirlist )); // 12 or so
sorted = Reverse( Sort List( dirlist ) ); // biggest first
filtered = Filter Each( {f}, sorted, Starts With( f, "Prog" ) );
// {"ProgramData", "Program Files (x86)", "Program Files"}
modifier : ajouter le chemin au début
Suite : Résultats JMP 16, ci-dessus. Les versions plus récentes de JMP peuvent être plus performantes avec c:/, qui préfiltre les objets du système de fichiers que vous ne souhaitez pas voir. Mais l'idée reste la même : utilisez les fonctions JSL pour conserver ce que vous souhaitez et filtrer le reste. Le tri inversé devrait placer la date en position 1.
Re: jsl - Comment ouvrir le fichier le plus récent avec une convention de nommage spécifique ?Merci Craige. Désolé pour la réponse tardive. Cela fonctionne bien. Le seul inconvénient est que le dossier contient beaucoup de sous-dossiers et que la fonction « Fichiers dans le répertoire » est longue à exécuter. Merci pour votre aide.