Gestion des fichiers et des dates
La gestion de fichiers
La gestion des fichiers est très simple avec PowerShell, contrairement à VBScript, pour ceux qui ont eu l’occasion de le pratiquer. En effet, il n’est plus question d’instancier des objets COM de type filesystem, de les ouvrir en spécifiant un mode d’accès (lecture ou écriture), puis de les fermer. PowerShell apporte un jeu de commandelettes dédié à la gestion de fichiers et nous verrons que cela représente un énorme gain de productivité dans l’écriture des scripts.
Cela étant, il y a un point particulier sur lequel il est important d’être vigilant et de savoir ce que l’on fait si l’on veut s’éviter bien des problèmes. Il s’agit du format d’encodage des fichiers texte. Ils sont nombreux et il ne faut pas se tromper ; nous détaillerons donc ce point dans ce présent chapitre.
Dans le chapitre À la découverte de PowerShell, nous nous étions intéressés au contenant, c’est-à-dire au fichier lui-même, et nous avions vu comment les créer, les déplacer, les renommer, etc. À présent, intéressons-nous au contenu, et voyons entre autres comment le générer et comment le relire.
1. Formats d’encodage des fichiers texte
Avant d’entrer dans le vif du sujet, il nous paraît nécessaire de prendre quelques minutes pour faire le point sur ce vaste et important sujet qu’est l’encodage des fichiers texte.
Sans entrer dans les détails de la préhistoire de l’informatique, commençons avec le standard ASCII, bien connu de tous. Celui-ci, apparu avec les premiers ordinateurs à la fin des années 60 aux États-Unis, encode les caractères sur 7 bits (de la position 0 à 127), soit un total de 128 caractères que l’on a regroupés dans une table qui fut devenue célèbre, c’est la fameuse table ASCII. Le souci de cette norme, pour nous Français (mais pas seulement), c’est qu’elle ne contient pas nos chers caractères accentués… Ce qui est logique puisque l’ASCII a été inventé par un organisme américain pour les Américains.
L’ASCII étendu (ANSI)...
Dates
Avec PowerShell, l’obtention d’un objet représentant la date et l’heure courante se fait avec la commande Get-Date. Bien qu’un simple Get-Date dans la console retourne l’heure et la date actuelles, cette date peut se décliner en bon nombre de formats.
Une variable contenant une date est de type DateTime. Pour le vérifier par vous-même, tapez la commande suivante :
PS > (Get-Date).GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True DateTime System.ValueType
Les objets de type DateTime possèdent de nombreuses propriétés et méthodes intéressantes comme, entre autres, la méthode IsDaylightSavingTime, qui indique si l’heure actuelle est ajustée pour l’heure d’été ou l’heure d’hiver.
Pour se rendre compte des possibilités d’actions sur les dates, le mieux est encore de faire appel à Get-Member sur l’objet retourné par Get-Date :
PS > Get-Date | Get-Member
Lorsque l’on parle de date ou de temps, il est nécessaire de définir ce que l’on appelle une unité de temps. Et l’unité la plus basse qui soit dans le système est appelée un « tick ». Un tick est une unité de mesure du temps. Elle correspond à un battement de cœur de l’ordinateur, c’est-à-dire à une période du Timer (le Timer est le composant électronique qui gère le temps). Cette valeur vaut actuellement dix millionièmes de secondes.
Soit à peu près 10 millions moyennant le temps de traitement de la commande.
1. Manipulation des objets DateTime
La commandelette Get-Member appliquée à un objet de type DateTime retourne une liste considérable de méthodes et de propriétés. Le tableau suivant reprend les méthodes les plus couramment utilisées et en donne une brève description.
Méthode |
Description |
Add AddDays AddHours AddMilliseconds AddMinutes... |