# Directorios

Grupo de comandos de instrucción que nos permiten operar con directorios.

## Cambiar directorio por defecto

Comando de instrucción del grupo Ficheros y directorios que establece la senda del directorio o carpeta por defecto que será usado por la instancia en ejecución.

**Origen de la instrucción**: cualquiera.

**Destino del subproceso**: ninguno.

#### Parámetros

*   **Fórmula de senda**

    Senda que define qué directorio por defecto queremos establecer. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
*   **Identificador de variable local booleana de retorno de ok (Opcional)**

    El comando retornará true (1) en esta variable local si ha podido realizar la operación o false (0) si no ha podido hacerlo.

#### **Funcionalidad**

Establece la senda por defecto por lo que en el uso de otros comandos posteriores del grupo Ficheros y directorios podremos obviar el uso de directorios y hacer uso únicamente de nombres de fichero ya que se asumirá la senda por defecto establecida con este comando.

#### **Comentarios**

Debemos tener en cuenta que el cambio del directorio por defecto afecta en el cliente a todos los procesos de la instancia, y de igual forma sucede en el servidor, por lo que si no queremos esta funcionalidad, debemos hacer uso de la senda completa en los comandos que lo necesiten.

Las sendas pueden estar definidas según el estilo de cualquiera de los sistemas operativos pero se han de tener en cuenta las diferencias en cuanto a la definición de la raíz del sistema.

#### Ejemplo

Establecemos cono directorio por defecto el 'Velneo/FicherosSubidos' a partir de directorio homePath() y devolvemos el resultado en la variable local OK.

```
Cambiar directorio por defecto ( homePath()+"/Velneo/FicherosSubidos”,  OK )
```

## Crear directorio

Comando de instrucción del grupo Ficheros y directorios que crea un directorio o carpeta.

**Origen de la instrucción**: cualquiera.

**Destino del subproceso**: ninguno.

#### Parámetros

*   **Fórmula de senda**

    Senda del directorio que queremos crear. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
*   **Senda completa**

    Este parámetro determina si la senda que hemos pasado como parámetro es una senda con la carpeta a crear como último elemento (No), o ha de crearse la senda completa en el caso de que no exista (Sí). Es decir, si indicamos una senda y alguno de las carpetas intermedias no existe, la senda completa se creará sólo si indicamos que lo haga, si no, dará error.
*   **Identificador de variable local booleana de retorno de ok (Opcional)**

    El comando retornará true (1) en esta variable local si ha podido realizar la operación o false (0) si no ha podido hacerlo.

#### **Funcionalidad**

Crea una carpeta en disco. Si hemos configurado Senda completa con el valor Sí se creará toda la senda si no existe.

#### **Comentarios**

Las sendas pueden estar definidas según el estilo de cualquiera de los sistemas operativos pero se han de tener en cuenta las diferencias en cuanto a la definición de la raíz del sistema.

#### Ejemplo

Creamos mediante una función el directorio 'Velneo/FicherosSubidos' a partir de directorio homePath(). Se creará la senda completa en caso de no existir. Devolvemos el resultado de la función con el valor de la variable local OK.

```
Crear directorio ( homePath()+"/Velneo/FicherosSubidos”, Sí, OK )
Set dato de retorno ( OK )
```

## Eliminar directorio

Comando de instrucción del grupo Ficheros y directorios que elimina un directorio del disco.

**Origen de la instrucción**: cualquiera.

**Destino del subproceso**: ninguno.

#### Parámetros

*   **Fórmula de senda**

    Senda del directorio que queremos eliminar. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
*   **Senda completa**

    Este parámetro determina si la senda que hemos pasado como parámetro es una senda con la carpeta a eliminar como último elemento (No), o ha de eliminarse la senda completa (Sí).
*   **Identificador de variable local booleana de retorno de ok (Opcional)**

    El comando retornará true (1) en esta variable local si ha podido realizar la operación o false (0) si no ha podido hacerlo.

#### **Funcionalidad**

Elimina una carpeta en disco. Si hemos configurado Senda completa con el valor Sí se eliminará toda la senda. Los directorios no han de contener ficheros y han de estar vacíos para poder ser eliminados.

#### **Comentarios**

Si tenemos establecido un directorio por defecto con el comando de instrucción [Cambiar directorio por defecto ](#cambiar-directorio-por-defecto)no es necesario definir la senda completa.

Las sendas pueden estar definidas según el estilo de cualquiera de los sistemas operativos pero se han de tener en cuenta las diferencias en cuanto a la definición de la raíz del sistema.

#### Ejemplo

Eliminamos mediante una función el directorio 'Velneo/FicherosSubidos' a partir de directorio homePath(), devolviendo el resultado de la función con el valor de la variable local OK.

```
Crear eliminar ( homePath()+"/Velneo/FicherosSubidos”, Sí, OK )
Set dato de retorno ( OK )
```

## Recorrer directorio

Comando de instrucción del grupo Ficheros y directorios que recorre un directorio devolviendo la senda de los ficheros y directorios encontrados y generando un subproceso por cada uno de ellos.

**Origen de la instrucción**: cualquiera.

**Destino del subproceso**: ninguno.

#### Parámetros

*   **Fórmula de senda**

    Senda que define qué directorio queremos recorrer. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
*   **Fórmula de filtro de archivos**

    Filtro de archivos que será tomados en cuenta cuando se recorre el directorio. Han de ir separados por comas. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc. Ejemplo: "\*.jpg, \*.gif, \*.png".
*   **Recursivo**

    Indicaremos si cuando encuentre directorio también lo recorrerá de forma recursiva (Sí) o la evaluará como si se tratara de un fichero (No).
*   **Identificador de variable local alfabética de retorno de senda**

    El comando retornará en esta variable la senda completa del fichero o directorio encontrado y para el cuál se genera un subproceso.
*   **Identificador de variable local booleana de retorno que indica si es directorio (Opcional)**

    El comando retornará true (1) en esta variable local si se trata de un directorio o false (0) si es un fichero.
*   **Identificador de variable local booleana de retorno que indica si es sólo lectura (Opcional)**

    El comando retornará true (1) en esta variable local si se trata de un fichero con el atributo de sólo lectura false (0) si podemos escribir en él.

#### **Funcionalidad**

Recorre un directorio generando un subproceso por cada fichero o directorio encontrado. Si configuramos que sea recursivo, además entrará en los directorios para recorrerlos también de forma recursiva. Dicho subproceso solamente es ejecutado si existe algún elemento que coincida con el filtro establecido en el parámetro fórmula de senda.

#### **Comentarios**

Si tenemos establecido un directorio por defecto con el comando de instrucción Cambiar directorio por defecto no es necesario definir la senda completa.

Las sendas pueden estar definidas según el estilo de cualquiera de los sistemas operativos pero se han de tener en cuenta las diferencias en cuanto a la definición de la raíz del sistema.

Para la especificación de filtro de archivos indicar que el filtro \* devuelve todo (tanto directorios como archivos) y el filtro \*.\* devuelve solamente archivos con extensión o directorios cuyo nombre contenga un punto (.).

Es posible abortar la ejecución del bucle que este comando genera usando en el subproceso del mismo el comando de instrucción de proceso [Finalizar bucle](../../basicos/controles-de-flujo#finalizar-bucle).

#### Ejemplo

Recorremos el directorio homePath()+"/Velneo/FicherosSubidos” eliminando los ficheros que contenga.

```
Recorrer directorio ( homePath()+"/Velneo/FicherosSubidos”, ”*”, Sí, SENDA_EN_CURSO, ES_DIRECTORIO, SOLO_LECTURA )
        If ( ! ES_DIRECTORIO )
            Eliminar fichero de disco ( SENDA_EN_CURSO,  )
```

## Renombrar directorio

Comando de instrucción del grupo Ficheros y directorios que renombra un directorio del disco.

**Origen de la instrucción**: cualquiera.

**Destino del subproceso**: ninguno.

#### Parámetros

*   **Fórmula de senda de origen**

    Senda del directorio que queremos renombrar. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
*   **Fórmula de senda de destino**

    Nueva senda de destino del directorio. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
*   **Identificador de variable local booleana de retorno de ok (Opcional)**

    El comando retornará true (1) en esta variable local si ha podido realizar la operación o false (0) si no ha podido hacerlo.

#### **Funcionalidad**

Renombra una carpeta en disco.

#### **Comentarios**

Si tenemos establecido un directorio por defecto con el comando de instrucción Cambiar directorio por defecto no es necesario definir la senda completa.

Las sendas pueden estar definidas según el estilo de cualquiera de los sistemas operativos pero se han de tener en cuenta las diferencias en cuanto a la definición de la raíz del sistema.

#### Ejemplo

Renombramos el directorio homePath() + "Velneo/FicherosSubidos" a homePath() + "Velneo/FicherosSubidos2017” devolviendo el resultado de la operación en la variable local OK.

```
Renombrar directorio ( homePath() + "Velneo/FicherosSubidos", homePath() + "Velneo/FicherosSubidos2017", OK )
```
