- Chcp 65001
- Fichier bat - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
- .Txt to .bat ✓ - Forum Logiciels
- Bouchou ka bat traduction ✓ - Forum traduction
- Txt to bat ✓ - Forum Autoit / batch
2 réponses
Bonjour,
Il faudrait que tu précises comment tu as procédé, ce n'est pas clair.
En supposant le test suivant:
echo menu dALT 130marrer
pause
je suis incapable d'obtenir l'affichage correct quand le bat ou cmd est enregistré que ce soit sous ANSI ou sous UTF8 dès lors que le caractère ASCII a été utilisé; il est obtenu seulement si j'ajoute la séquence CHCP 65001 au fichier ANSI et que je l'enregistre sous UTF8.
La moralité est donc que CHCP 65001 ne suffit pas et qu'il faut convertir par lot tous les fichiers de ANSI à UTF8, voir par exemple ici, en remplaçant bien sûr unicode par utf-8 et csv par bat ou cmd.
https://stackoverflow.com/questions/44157064/need-to-batch-convert-a-large-quantity-of-text-files-from-ansi-to-unicode
De manière subsidiaire:
-Si je ne veux pas en voir l'affichage, saisir CHCP 65001>NUL
-Dans un certain nombre de cas de figure (de mémoire par exemple ROBOCOPY), c'est la commande elle-même qui retourne des caractères exotiques même en l'absence d'accents, il faut alors entrer CHCP 1252>NUL, qu'on alternera au besoin avec 65001 dans son fichier de commandes.
Bonjour,
Merci pour la réponse.
Je vais essayer de préciser un peu plus :
1) J'utilise le bloc-note et tape le code nécessaire en prenant soin de remplacer les caractères spéciaux grâce au code "ALT + (code)". Par exemple :
Call "C:\ProgramData\Microsoft\Windows\Start Menu\Documents à vérifier.lnk"
je remplace "à" par "ALT + 0133"
et je remplace "é" par "ALT + 0130"
Ce qui donne :
Call "C:\ProgramData\Microsoft\Windows\Start Menu\Documents … v‚rifier.lnk"
Enregistré en ANSI, cela fonctionne parfaitement sur un Windows français.
> Pour des raisons de compatibilité, je dois changer ma méthode.
2) Évidemment, je dois ouvrir chaque fichier ".bat" pour faire les modifications : ajout de CHCP 65001 + ajouter les accents spéciaux sans modification + encodage en UTF-8. Cependant, je ne souhaite pas les exécuter un à un afin de vérifier que les opérations s’effectuent sans erreurs.
Bref, la question principale étant :
Est-ce que "CHCP 65001" + "UTF-8" pourraient créer des problèmes d'exécution du code .bat (call, start, rd, variable...) par rapport à ma base ANSI ?
Si non, la solution me convient.
* Je ne souhaite pas utiliser PowerShell.
Bonjour,
J'avais bien compris mais, comme dit précédemment, sans CHCP 65001 je n'arrive pas à reproduire le comportement: si j'entre des caractères ALT, l'affichage n'est pas correct que ce soit enregistré sous ANSI ou UTF-8, cela tient peut-être à la police système de la console selon la version du système d'exploitation.
Il devient bien sûr correct si j'exécute:
@echo off CHCP 65001>NUL echo "C:\ProgramData\Microsoft\Windows\Start Menu\Documents ALT 133 vALT 130.lnk" pause
enregistré sous UTF-8 et cela n' a aucune incidence sur les commandes puisque les chemins sont lus correctement.
Comme l'effet semble version dépendant, je t'invite à faire un test en créant le batch ci-dessus, si ça fonctionne pour un, ça fonctionnera pour tous.
En passant et le cas échéant dans d'autres situations que les batchs, les caractères ASCII y compris les espaces sont une source d'ennuis: je préfère dans cette situation appeler mon fichier
Documents_a_verifier
L'affichage de la console est d'ailleurs peut-être, je ne me souviens plus, indépendant de la bonne exécution de la commande.
En dehors de l'aspect esthétique de la question pour les commandes echo, à tester si tu as du temps à perdre avec un test comme précédemment où au lieu de echo en 3 par exemple on copie le fichier ailleurs.
Qui plus est et si la question est de modifier tous les fichiers sans les ouvrir, il faudra bien que je les ouvre un par un en dehors de réenregistrer pour y ajouter
CHCP 65001>NUL.
Le hic est que si je veux passer à la trappe l'affichage de cette commande, il ne doit pas avoir lieu à la première ligne de chaque fichier mais à la deuxième après la commande @echo off.
La question est facile à régler avec un utilitaire et/ou une commande appropriée dans le monde Linux, beaucoup moins sous Windows en batch brut de coffrage.
On peut le cas échéant s'inspirer de quelque chose de ce genre, mais on a sans doute plus vite fait de modifier manuellement chaque fichier au moment de l'emploi.
https://msfn.org/board/topic/118835-prepend-or-interpend-text-to-a-text-file-via-batch-script/