jsl - Come si apre il file più recente con una convenzione di denominazione specifica?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao a tutti,
Come faccio a scrivere jsl per aprire il file più recente in una directory che contiene una convenzione di denominazione specifica? Ho il seguente codice che aprirà il nuovo file nella directory:
(
OpenNewestFile = File nella directory ("C: \ users \ me \ MyDocuments \");
{T, p} = {0,1};
per (i = 1, i <= n elementi (OpenNewestFile), i ++,
ti = Data ultima modifica ("C: \ users \ me \ MyDocuments \" || OpenNewestFile );
Se (ti> t, t + ti; p = i));
dt1 = Apri ("C: \ users \ me \ MyDocuments \" || OpenNewestFile
)
);
Una volta al giorno un nuovo file viene scritto nella directory con un nome simile a "FD_History_2016_08_27_17_36.csv"
Come posso modificare questo script per trovare il file "FD_History_" più recente e aprirlo ignorando qualsiasi altro file nella directory?
Grazie in anticipo!
Ri: jsl - Come aprire il file più recente con una convenzione di denominazione specifica?Questo esempio usa regex per vedere se il nome termina con .jmp (il $ corrisponde alla fine della riga) o inizia con la lettera a (il ^ corrisponde all'inizio della riga). Regex restituisce un valore mancante se la corrispondenza fallisce. La funzione RemoveFrom elimina gli elementi offendenti dall'elenco. Il ciclo for viene eseguito all'indietro, pertanto gli elementi eliminati non modificano la parte dell'elenco che non è stata già esaminata. (Quando un elemento viene cancellato, gli indici degli oggetti successivi cambiano.)
NULL dice regex di non sostituire il testo corrispondente; IGNORECASE dice regex che Jmp e jmp devono corrispondere.
x = filesindirectory ( "$ desktop");
per (i = nitem (x), i> = 1, i--,
if (ismissing (regex (x , ".Jmp $ | ^ a" , NULL, IGNORECASE)), removefrom (x, i))
);
mostra (x);
x = {"animated.gif", "stories.jmp", "Untitled 3.jmp"};
È possibile creare l'ultima data di modifica in questo ciclo o tenerlo in un ciclo separato dopo questo.
Re: jsl - Come aprire il file più recente con una convenzione di denominazione specifica?CIAO,
Ho un problema simile, ma in questo caso il nome della cartella cambia ogni settimana lavorativa.
La struttura delle cartelle è:
\\cartellaprincipale\ 202503 \PPT_ 12345 \sottocartelle\indicatori.xlsx.
La cartella principale contiene 3 o 4 sottocartelle "YYYYWW", ad esempio 202503, 202504, 202505, mentre il numero associato alla cartella PPT_ 12345 è casuale ogni settimana.
Sono riuscito a ottenere un elenco di tutte le sottocartelle YYYYWW {"202512", "202513", "202514"}, ma devo selezionare la cartella più recente (numero massimo), in questo caso "202514".
Quindi devo selezionare solo la cartella PPT (ci sono altre sottocartelle ma ce n'è solo una chiamata "PPT_...").
Potresti aiutarmi?
Grazie
Re: jsl - Come aprire il file più recente con una convenzione di denominazione specifica?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"}
modifica: anteponi il percorso
altro: risultati JMP 16, sopra. Le versioni JMP più recenti potrebbero fare un lavoro migliore con c:/ -- prefiltrando gli oggetti del file system che non vuoi vedere. Ma l'idea è la stessa, usa le funzioni JSL per mantenere ciò che vuoi e filtrare il resto. L'ordinamento inverso dovrebbe mettere la data in posizione 1.
Re: jsl - Come aprire il file più recente con una convenzione di denominazione specifica?Grazie Craige. Scusa per il ritardo nella risposta. Funziona bene. L'unico inconveniente è che la cartella contiene molte sottocartelle e la funzione "File nella directory" impiega molto tempo per essere eseguita. Comunque, grazie per il tuo aiuto.