Cómo descomprimir usando los comandos de archivo zip de JMPEn una pregunta anterior que hice, pregunté si era posible descomprimir archivos.Leí un blog ( Uso de FILENAME ZIP para descomprimir y leer archivos de datos en SAS - The SAS Dummy ), pero por el momento me cuesta seguirlo usando JSL.
Tengo una carpeta con 150 carpetas comprimidas.Cada carpeta tiene un nombre de dispositivo, seguido de una puntuación de pedido y luego la fecha (es decir, Dispositivo X_2016_07_20.zip).Quiero crear una nueva carpeta con el nombre del dispositivo (que puedo hacer funcionar).Puedo abrir una carpeta zip y ver todos los diferentes archivos que contiene, pero no sé cómo descomprimirla (o incluso copiarla) en la nueva carpeta.¿Alguien puede echarme una mano?
Esto es lo que tengo hasta ahora:
directory = Pick Directory();
filesInDirectory = Files In Directory( directory );
nFiles = N Items( filesInDirectory ); //get number of zip files in directory
For( i = 1, i <= nFiles, i++,
fileName = filesInDirectory;
pos = Contains( fileName, "_" );
deviceName = Left( fileName, pos - 1 ); //get the device name
subDir = directory || deviceName;
//Create Directory(subDir); //eventually create a new sub directory
za = Open( directory || fileName, zip );
dirlist = za << dir;
Show( dirlist ) // see all contents of zipped folder
;
);
Re: Cómo descomprimir usando los comandos JMP Zip ArchiveEstoy siguiendo el código de ejemplo anterior, pero obtuve datos vacíos cuando intento leer el contenido del archivo zip.
Por ejemplo, file1.csv comprimido en file1.zip y estoy intentando leer file1.csv desde file1.zip.
¿Podría indicarme qué está mal en mi código?
za = Open( unzip_file_list[1], zip);
dirlist = za << dir;
// below line correctly giving me file1.csv
show(dirlist);
// below two lines correctly gives me full file path.
full_path = directory || dirlist[1];
show(full_path);
// below line returns "Empty()" in log windows.
txt = za << read( full_path);
Re: Cómo descomprimir usando los comandos JMP Zip Archive<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bienvenido/gracias y un seguimiento tardío: Cargar datos comprimidos podría ser útil también.
Re: Cómo descomprimir usando los comandos JMP Zip Archive¡Muchas gracias!Definitivamente lo estaba complicando demasiado.Excelente explicación también.
Re: Cómo descomprimir usando los comandos JMP Zip Archivela siguiente línea utiliza el objeto de archivo zip, za, para leer un miembro del archivo.algo como esto:
za = Open( "$desktop\test.zip", zip );
dirlist = za << dir;
Show( dirlist ); // see all contents of zipped folder
// dirlist = {"fft.jmp", "fft2.jsl"};
For( i = 1, i <= N Items( dirlist ), i++,
If( Right( dirlist, 4 ) == ".jmp" /*binary data*/,
blob = za << read( dirlist, Format( blob ) );
Save Text File( "$desktop\deleteme_" || dirlist, blob );
);
If( Right( dirlist, 4 ) == ".jsl" /*text data*/,
text = za << read( dirlist );
Save Text File( "$desktop\deleteme_" || dirlist, text );
);
);
Hay dos ejemplos, en negrita, porque un archivo zip puede contener datos binarios (una tabla de datos JMP en este caso) o texto sin formato (un script JMP).Los datos binarios no se pueden almacenar en una cadena JSL, pero un BLOB funcionará.La siguiente línea, saveTextFile, comprende tanto cadenas como BLOB (y guardará un archivo binario para un BLOB, independientemente de su nombre).No debe depender del orden de los miembros en el archivo zip, especialmente si alguien pudo haber editado/agregado/eliminado miembros de ellos.
(Supongo que desea extraer los miembros, no copiar el archivo .zip a otro archivo .zip.Podrías hacerlo sin abrir el archivo zip en absoluto).
editar: también puedes usar BLOB para archivos de texto, si solo los estás copiando.Si desea procesar el texto en JSL, BLOB lo hará más difícil.
Re: Cómo descomprimir usando los comandos JMP Zip Archivepara obtener las entradas respectivas, debe usar i como índice, por ejemplo, dirlist[i] en lugar de dirlist
entonces el código anterior funciona muy bien.
za = Open( "$desktop\test.zip", zip );
dirlist = za << dir;
For( i = 1, i <= N Items( dirlist ), i++,
blob = za << read( <FONT color="#339966"><STRONG>dirlist[i]</STRONG></FONT>, Format( blob ) );
);
Ejemplo: Cómo descomprimir usando los comandos JMP Zip ArchiveRP = Run Program( Executable( "C:\Program Files\WinRAR\WinRAR.exe" ), Options( {"e -or C:\1\abc.7z C:\2"} ) );