Caractères spéciaux dans un .bat

Résolu/Fermé
Fonx2 - 22 janv. 2008 à 12:22
 szoixjza - 24 oct. 2017 à 10:20
Bonjour,

Alors voila, Je voudrai renommer des fichiers en mp3 avec une la commande "rename" de dos. Comme je dois en renommer environ 150, je me suis dit que je pourrai me faire un ".bat" contenant des lignes du genre:

[contenu du .bat]

rename "a.mp3" "a Nº86.mp3"

[fin du .bat]

Seulement voila, cet idiot n'arrive pas à prendre correctement en charge le caractère "º" (qui correspond au ALT + 167 pour la table ACSII 2). A la place, j'obtient un horrible caractère carré et blanc.

Le plus curieux, c'est que quand je tape la même chose dans l'invite de commande, sa fonctionne à merveille! Le caractère s'affiche normalement dans le nom du fichier renommé.


Comment faire?
A voir également:

20 réponses

Pour information : le problème original vient du fait que la console MS-DOS (ou cmd, si vous voulez) utilise la table de caractères ASCII simple, alors que Windows utilise une table de caractères étendue (ANSI) légèrement différente.
Les 128 premiers caractères sont strictement identiques en ASCII et ANSI, ceux qui changent d'une table à l'autre sont de code ASCII ou ANSI > 128.

Quand tu utilises l'éditeur "edit" dans une console MS-DOS, tu forces simplement l'écriture de ton batch en utilisant la table ASCII, qui est celle utilisée par la console MS-DOS.
C'est aussi pour cette raison que cela fonctionne quand on tape le caractère dans la console DOS et qu'on le recopie dans le batch sous un éditeur Windows.

L'autre solution, pour afficher un caractère particulier dans un éditeur sous Windows (bloc-notes, Notepad++, Editpad, Ultra-Edit, etc...), est de taper :
- Alt + <code ASCII>
- Alt + 0<code ANSI>

(garder Alt enfoncé et, en même temps, taper le code du caractère).
IMPORTANT : le code ASCII ou ANSI doit être tapé sur le pavé numérique impérativement.

Pour un caractère destiné au MS-DOS, on utilise le code ASCII seul (sur 3 chiffres).
Pour différencier les caractères ANSI par rapport à ASCII, on ajoute un zéro (chiffre 0) devant le code ANSI (lui aussi sur 3 chiffres).
28
Fonx2 Messages postés 331 Date d'inscription dimanche 6 avril 2008 Statut Membre Dernière intervention 5 mai 2013 132
3 nov. 2010 à 20:19
Merci pour cette précision qui permet de mieux comprendre la problématique.
Réponse très claire et qui vient compléter les infos déjà présente dans la discution!
Je met +1

Merci encore!
0
merci
0