¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. PowerShell Core y Windows PowerShell
  3. Gestión de archivos y fechas
Extrait - PowerShell Core y Windows PowerShell Los fundamentos del lenguaje (2a edición)
Extractos del libro
PowerShell Core y Windows PowerShell Los fundamentos del lenguaje (2a edición) Volver a la página de compra del libro

Gestión de archivos y fechas

La gestión de archivos

La gestión de archivos es muy fácil con PowerShell, a diferencia de lo que sucede con VBScript, para quien haya tenido ocasión de practicar con este. En efecto, ya no es necesario instanciar objetos COM de tipo filesystem, abrirlos especificando un modo de acceso (lectura o escritura), para después cerrarlos. PowerShell dispone de un juego de comandos dedicados a la gestión de archivos y veremos que representan una ganancia enorme de productividad en la escritura de scripts.

Dicho esto, hay un aspecto en particular al que se debería prestar atención y del que habría que saber que se hace para evitar problemas. Se trata del formato de codificación de los archivos de texto. Son muchos y no conviene equivocarse; detallaremos este punto en este capítulo.

En el capítulo Descubrimiento de PowerShell, nos interesamos en el continente, es decir en el archivo en sí, y habíamos visto cómo crearlo, desplazarlo, renombrarlo, etc. Ahora nos interesamos en el contenido y veremos entre otras cosas cómo generarlo y cómo leerlo.

1. Formatos de codificación de los archivos de texto

Antes de entrar de lleno en materia, nos parece necesario dedicar algunos minutos a introducir este tema tan vasto e importante: la codificación de archivos de texto.

Sin entrar en los detalles de la prehistoria informática, comenzaremos hablando del estándar ASCII, conocido por todos. Este, aparecido con los primeros ordenadores a finales de los años 60 en Estados Unidos, codifica los caracteres en 7 bits (de la posición 0 a la 127), lo que da, un total de 128 caracteres que se agrupan en una tabla que se ha vuelto célebre, la famosa tabla ASCII. El problema que presenta esta norma para nosotros, castellanohablantes (y no solo para nosotros), es que no contiene nuestros caracteres acentuados… Lo cual es lógico, puesto que ASCII se inventó por un organismo americano para los americanos.

ASCII extendido (ANSI), una solución intermedia

Dado un problema, dada una solución; y en informática los procesadores trabajan sobre potencias de 2, de modo que no es posible escribir un carácter salvo en 8 bits (1 byte). Esto significa que existía un bit inutilizado en la codificación de caracteres en formato ASCII. Los informáticos de la época...

Fechas

Con PowerShell, la obtención de un objeto que representa la fecha y la hora actual se realiza mediante el comando Get-Date. Aunque un simple Get-Date en la consola devuelve la hora y la fecha actual, este fecha puede declinarse en numerosos formatos.

Una variable que contenga una fecha es de tipo DateTime. Para comprobarlo por usted mismo, teclee el siguiente comando:

PS > (Get-Date).GetType() 
 
IsPublic IsSerial Name            BaseType 
-------- -------- ----            -------- 
True     True     DateTime        System.ValueType 

Los objetos de tipo DateTime poseen numerosas propiedades y métodos interesantes como, entre otros, el método IsDaylightSavingTime, que indica si la hora actual está ajustada al horario de verano o de invierno.

Para darse cuenta de las posibilidades existentes en el tratamiento de las fechas, lo mejor es una vez más utilizar Get-Member sobre el objeto devuelto por Get-Date:

PS > Get-Date | Get-Member 

Cuando hablamos de fecha o de tiempo, es necesario definir lo que llamamos unidad de tiempo. Y la unidad más elemental del sistema se llama «tick». Un tick es una medida de tiempo. Corresponde a un latido de corazón del ordenador, es decir a un periodo del Timer (el Timer es el componente electrónico que gestiona el tiempo). Este valor actualmente es del orden de diez millonésimas de segundo.

Para conocer el número de ticks presentes en un segundo, teclee el comando siguiente: $((Get-Date).ticks) - $((Get-Date).Addseconds(-1).ticks)

Por lo tanto aproximadamente 10 millones de media para el tratamiento del comando.

1. Manipulación de los objetos DateTime

El comando Get-Member aplicado a un objeto de tipo DateTime devuelve una lista considerable de métodos y propiedades. La siguiente tabla expone los métodos más utilizados y da una breve descripción.

Método

Descripción

Add

AddDays

AddHours

AddMilliseconds

AddMinutes

AddMonths

AddSeconds

AddTicks

AddYears

Añade o sustrae una o varias unidades de tiempo del objeto fecha. Añade si el valor pasado como argumento es positivo, sustrae si el valor pasado es negativo.

CompareTo

Compara una fecha con otra. Los valores devueltos son:

-1: si la fecha es anterior a la que la comparamos.

1: si es posterior.

0: si son iguales....