Ir al contenido

Filesystem Activities

Versión: 1.0.6  ·  ID: zoan-packages-fs  ·  Autor: Zoan Software

El paquete Files (filesystem) trabaja con archivos y carpetas del sistema: leer y escribir archivos de texto, copiar, mover, eliminar, comprobar si algo existe y listar el contenido de una carpeta. Es un paquete de apoyo presente en casi toda automatización — para organizar descargas, generar archivos de salida, mover documentos procesados o leer datos de configuración.

Casi todas las actividades reciben una ruta. Puedes indicarla de dos formas:

  • Ruta absoluta: C:\reportes\salida.txt o C:/reportes/salida.txt. En expresiones, recuerda que la barra invertida se escribe literal: "C:\reportes\salida.txt" (para terminar un texto en barra, escríbela doble: "C:\reportes\\" + nombre). Ver rutas de Windows. También sirven rutas de red (\\servidor\compartida\archivo.txt) si la cuenta con la que corre el robot tiene acceso.
  • Archivo del proyecto con asset(...): para archivos que viajan dentro de tu paquete (plantillas, datos de ejemplo), usa asset("datos/entrada.txt"). Resuelve la ruta correcta sin importar en qué máquina se ejecute. Ver asset().

Evita las rutas relativas (salida.txt, datos\salida.txt): se resuelven contra la carpeta de trabajo del robot, que depende de desde dónde arranca. Desde la versión 1.0.6, escribir, anexar, copiar o mover con solo el nombre del archivo ya no falla, pero una ruta completa deja claro dónde queda.

Write File, Append to File, Copy File y Move File crean la carpeta de destino (y las intermedias) si no existe: no necesitas un Create Directory previo.

Cuidado con los valores por defecto, que no son iguales en todas las actividades:

Actividadoverwrite por defecto
Write Filetrue — reemplaza el archivo existente
Copy File / Move Filefalse — falla si el destino ya existe

Read File, Write File y Append to File aceptan una codificación por su nombre. Por defecto "utf-8".

ValorCuándo usarlo
utf-8Por defecto. Al escribir, el archivo lleva la marca BOM de UTF-8 al inicio, que Excel y el Bloc de notas reconocen.
iso-8859-1 (o latin1)Archivos de sistemas antiguos de Windows con tildes y eñes que se ven mal en UTF-8.
utf-16 (o unicode), utf-16BE, utf-32Archivos Unicode de 2 o 4 bytes por carácter.
us-asciiSolo caracteres ASCII; los demás se reemplazan por ?.

Al leer, si el archivo empieza con una marca BOM (UTF-8, UTF-16 o UTF-32), esa marca manda sobre el encoding indicado. Otros nombres de páginas de códigos (por ejemplo windows-1252) pueden no estar disponibles y hacer fallar la actividad con 'windows-1252' is not a supported encoding name…: usa iso-8859-1 en su lugar.

Además de los mensajes propios de cada actividad, una operación de archivo puede fallar con un error del sistema operativo (estos mensajes pueden aparecer en inglés o en el idioma de Windows). Los más comunes:

MensajeCausa y solución
The process cannot access the file '…' because it is being used by another process.Otro programa tiene el archivo abierto (típico: un Excel abierto). Ciérralo antes, o reintenta con Retry y una espera.
Access to the path '…' is denied.La cuenta del robot no tiene permiso sobre el archivo o la carpeta, o el archivo es de solo lectura.
Could not find a part of the path '…'.Una carpeta de la ruta no existe (por ejemplo, una unidad de red no conectada).
ActividadTipoSalidaQué hace
Read Fileread-filestringLee el contenido de un archivo de texto
Write Filewrite-filestringEscribe texto en un archivo (lo crea o reemplaza)
Append to Fileappend-filestringAñade texto al final de un archivo
ActividadTipoSalidaQué hace
File Existsfile-existsbool¿Existe el archivo?
Copy Filecopy-filestringCopia un archivo a otra ruta
Move Filemove-filestringMueve o renombra un archivo
Delete Filedelete-file—Elimina un archivo
ActividadTipoSalidaQué hace
Create Directorycreate-directorystringCrea una carpeta (y las que falten en la ruta)
List Fileslist-filesListLista los archivos/carpetas de un directorio

Procesar cada archivo descargado y archivarlo:

List Files path = "C:/descargas" pattern = "*.xlsx" → output: archivos
For Each items = archivos itemVariable = ruta
└─ activities:
... procesar el archivo ...
Move File source = ruta destination = pathJoin("C:/procesados", fileName(ruta))