<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Me gustaría encontrar algún código que abra archivos en un directorio de Windows de forma recursiva.
Digamos que mi camino es: c:\charlie\data
Quiero que JMP encuentre todos los archivos *.txt en este directorio y en los inferiores y los abra todos.
Al final los fusionaré, pero por ahora sólo quiero abrirlos todos.
Lo he probado (sin suerte):
ruta = "C:\charlie\data\data1";
file_list = Archivos en el directorio ("C:\charlie\data\data1");
para (i=1, i<=NItems(lista_archivo), i++,
dt =
Abierto(
camino || lista_archivo ,
Importar ajustes(
Fin de línea (CRLF, CR, LF),
Fin del campo (coma, otro ("0x7c")),
Cotizaciones de tira( 1 ),
Utilice el apóstrofe como comillas (0),
Escanear el archivo completo (1),
Trate las columnas vacías como numéricas (0),
Etiquetas( 1 ),
Nombres de columna Inicio( 1 ),
Inicios de datos (2),
Líneas para leer (todas),
Regla del año ("20xx")
)
);
);
Este script funciona muy bien para abrir todos los archivos en un directorio, filtrarlos según algunos criterios y luego concatenar todos los archivos.
==================================================== ==================================================== =
ruta = "C:\temp\datos\";
lista_archivo = {};
file_list = Archivos en el directorio (ruta, recursivo);
misArchivos = lista_archivos;
Para (i = 1, i <= N elementos (lista_archivo), i++,
Si( Contiene( lista_archivos , ".suma" ),
mis archivos = ""
)
);
archivos_finales = mis archivos;
///////////////////Abrir el primer archivo de la lista//////////////////////
///////se agregarán archivos adicionales a este////////////
yo=1;
dtjoin = Abrir(
camino || archivos_finales ,
columnas (
Pass_Fail = Carácter,
Parámetro = Carácter,
Valor_datos = numérico,
Unidades = Carácter,
LSL = numérico,
USL = numérico,
Nota = Carácter,
Test_Cond = Carácter
),
Importar ajustes(
Fin de línea (CRLF, CR, LF),
Fin del campo (coma, otro ("0x7c")),
Cotizaciones de tira( 1 ),
Utilice el apóstrofe como comillas (0),
Escanear el archivo completo (1),
Trate las columnas vacías como numéricas (0),
Etiquetas( 1 ),
Nombres de columna Inicio( 1 ),
Inicios de datos (2),
Líneas para leer (todas),
Regla del año ("20xx")
),
)
<< establecer nombre( "Unido1" );
////////////////////////////////////////////////// ///////////////////////////
//////////Ahora abra los archivos restantes en la lista///////////////
////////////////////////////////////////////////// ///////////////////////////
yo=2;
Para (i = 2, i <= N elementos (archivos_finales), i++,
dt =
Abierto(
camino || archivos_finales ,
columnas (
Pass_Fail = Carácter,
Parámetro = Carácter,
Valor_datos = numérico,
Unidades = Carácter,
LSL = numérico,
USL = numérico,
Nota = Carácter,
Test_Cond = Carácter
),
Importar ajustes(
Fin de línea (CRLF, CR, LF),
Fin del campo (coma, otro ("0x7c")),
Cotizaciones de tira( 1 ),
Utilice el apóstrofe como comillas (0),
Escanear el archivo completo (1),
Trate las columnas vacías como numéricas (0),
Etiquetas( 1 ),
Nombres de columna Inicio( 1 ),
Inicios de datos (2),
Líneas para leer (todas),
Regla del año ("20xx")
)
);
dtjoin = dtjoin << Concatenar(
dt,
nombre de la tabla de salida( "Unido" || Char( i ) ),
);
Cerrar( dt, nosave);
Cerrar( "Unido" || Char( i - 1 ), nosave );
Espere (0,1);
); //Fin de para
dtjoin << establecer nombre ("Todos unidos");
CHCampos,
Estaba haciendo algo similar, donde quería abrir solo un archivo a la vez y luego concatenarlo al final del archivo anterior.
El método sencillo de abrir todos los archivos y luego concatenarlos todos a la vez era demasiado complicado debido a la cantidad de archivos con los que estaba trabajando.
El script adjunto le permite elegir un directorio con archivos txt o csv y luego los concatena todos juntos, uno a la vez.
Esto también ayuda si todos los archivos no caben en la memoria a la vez.
-B
Agregué el "\"
¡Gracias!
Ahora estoy intentando concatenarlos a todos.
Encontré una publicación de MJB que fue muy útil.
Publicó una manera de hacer esto pero con JOIN y solo con archivos JMP.
Agregué mi rutina de importación y las opciones "abrir con vista previa".
Necesitaba abrir el primer archivo y luego configurar el bucle para abrir los otros archivos.
y concatenarlos con el primero.
Todavía no funciona del todo pero estoy cerca.
Su variable de ruta no termina con una barra, por lo que el nombre del archivo resultante fallará.
Para hacerlo recursivo y tener nombres de archivos correctos:
path = "C:\charlie\data\data1\";
file_list = Files In Directory(path, recursive);
for(i = 1, i <= N Items(file_list), i++,
print(path || file_list);
);
Puede modificar la declaración impresa según sus necesidades.