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.
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.
Une fois fait il suffit d’enregistrer le fichier. À l’éxécution les espaces insécables seront reconnus comme tels.
Merci sujet intéressant
Merci pour cette astuce.
C’est avec plaisir.