Batch et caractères spéciaux

Il peut arriver, pour une raison x ou y, d’avoir besoin d’utiliser des caractères spéciaux lors de l’écriture d’un script Batch. On tape son code dans le bloc-notes, on enregistre, on change l’extension .txt en .bat, et là c’est le drame: l’interpréteur de commandes de windows n’interprète pas les caractères spéciaux correctement.

Ça m’est arrivé sur un forum, et après quelques recherches j’ai trouvé une solution (https://forums.cnetfrance.fr/topic/1438577-probleme-del-bat/) que je vais détailler ici.

Le problème

Dans notre cas l’OP souhaite manipuler un chemin contenant des espaces dans le nom d’un dossier. Sauf que ces espaces ne sont pas des espaces standards, mais des espaces insécables. Forcément le script écrit avec des espaces standards ne fonctionne pas, l’interpréteur de commande ne trouvant pas le dossier correspondant au chemin, et retourne une erreur « Le chemin d’accès spécifié est introuvable. »

Ces espaces insécables s'obtiennent de deux manière: 
- En utilisant le code ANSI: ALT + 0160
- En utilisant le code ASCII: ALT + 255

Explication

Utilisés directement dans l’interpréteur de commande ces codes fonctionnent sans souci. Utilisés dans un fichier script batch ils génèreront des erreurs. Le problème se situe dans la manière dont l’éditeur utilisé pour écrire le code du script va enregistrer ces caractères dans le fichier. C’est ce qu’on appelle le codage des caractères.

Solution

Elle consiste à utiliser un éditeur avancé comme Notepad++.

Dans un premier temps il faut savoir quel est le nombre de la page de codes utilisé par l’interpréteur de commande. La commande chcp retourne la valeur de ce nombre.

Utilisation de la commande chcp

Notez ce nombre (ici 850).

Dans Notepad++ il faut aller changer le codage des caractères et lui attribuer celui qui correspond à celui utilisé par l’interpréteur de commande.

Changement du codage des caractères dans Notepad++

Une fois fait il suffit d’enregistrer le fichier. À l’éxécution les espaces insécables seront reconnus comme tels.

Une réflexion sur “Batch et caractères spéciaux

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.