jsl - ¿Cómo abrir el archivo más reciente con una convención de nomenclatura específica?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola a todos,
¿Cómo hago un script de jsl para abrir el archivo más nuevo en un directorio que contiene una convención de nombres específica? Tengo el siguiente código que abrirá el archivo más nuevo en el directorio:
(
OpenNewestFile = Archivos en el directorio ("C: \ users \ me \ MyDocuments \");
{t, p} = {0,1};
para (i = 1, i <= n elementos (OpenNewestFile), i ++,
ti = Fecha de la última modificación ("C: \ users \ me \ MyDocuments \" || OpenNewestFile );
Si (ti> t, t + ti; p = i));
dt1 = Abrir ("C: \ users \ me \ MyDocuments \" || OpenNewestFile
)
);
Una vez al día, se escribe un nuevo archivo en el directorio con un nombre parecido a "FD_History_2016_08_27_17_36.csv"
¿Cómo puedo modificar este script para encontrar el archivo "FD_History_" más reciente y abrirlo mientras se ignora cualquier otro archivo en el directorio?
¡Gracias por adelantado!
Re: jsl - ¿Cómo abrir el archivo más reciente con una convención de nomenclatura específica?Este ejemplo usa expresiones regulares para ver si el nombre termina con .jmp (la $ coincide con el final de la línea) o comienza con la letra a (la ^ coincide con el principio de la línea). Regex devuelve un valor faltante si la coincidencia falla. La función RemoveFrom elimina elementos ofensivos de la lista. El bucle for se ejecuta hacia atrás para que los elementos eliminados no cambien la parte de la lista que aún no se ha examinado. (Cuando se elimina un elemento, los índices de los elementos posteriores cambian).
NULL le dice a regex que no reemplace el texto coincidente; IGNORECASE le dice a expresiones regulares que Jmp y jmp deben coincidir.
x = directorio de archivos ("$ desktop");
para (i = nitems (x), i> = 1, i--,
si (desaparece (regex (x , ".Jmp $ | ^ a" , NULL, IGNORECASE)), removefrom (x, i))
);
show (x);
x = {"animated.gif", "stories.jmp", "Untitled 3.jmp"};
Puede incluir la última fecha de modificación en este bucle, o mantenerla en un bucle separado después de este.
Re: jsl - ¿Cómo abrir el archivo más reciente con una convención de nombres específica?Hola,
Tengo un problema similar pero en este caso el nombre de la carpeta cambia cada semana laboral.
La estructura de la carpeta es:
\\la carpeta principal\ 202503 \PPT_ 12345 \subcarpetas\indicadores.xlsx.
La carpeta principal contiene 3 o 4 subcarpetas "AAAAAA", por ejemplo, 202503, 202504, 202505 y el número asociado con la carpeta PPT_ 12345 es aleatorio cada semana.
Logré obtener una lista de todas las subcarpetas AAAAWW {"202512", "202513", "202514"} pero necesito seleccionar la carpeta más nueva (número máximo), en este caso "202514".
Luego necesito seleccionar solo la carpeta PPT (hay otras subcarpetas pero solo una llamada "PPT_...").
¿Podrías ayudarme aquí?
Gracias
Re: jsl - ¿Cómo abrir el archivo más reciente con una convención de nombres específica?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"}
editar: anteponer la ruta
Más: Resultados de JMP 16, arriba. Las versiones más recientes de JMP podrían funcionar mejor con c:/, prefiltrando los objetos del sistema de archivos que no desea ver. Pero la idea es la misma: usar las funciones JSL para conservar lo que desea y filtrar el resto. La ordenación inversa debería colocar la fecha en la posición 1.
Re: jsl - ¿Cómo abrir el archivo más reciente con una convención de nombres específica?Gracias, Craige. Disculpa la demora en responder. Funciona bien. El único inconveniente es que la carpeta contiene muchas subcarpetas y la función "Archivos en el directorio" tarda mucho en ejecutarse. Gracias por tu ayuda.