Commandes DOS: Compatibilité des noms de fichiers Mac contenant des accents

Fermé
Denis_C - Modifié le 13 août 2020 à 22:30
 Denis_C - 18 août 2020 à 18:54
Bonjour,
J'utilise Windows 10, et la fenêtre de commande DOS.
Les fichiers portant un nom contenant le caractère "é" semblent être tantôt correctement traités par des commandes DOS (avec une contrainte = utiliser la commande "chcp 1252" dans le fichier batch de traitement des fichiers), et tantôt génèrent une erreur "File not found".
Après remplacement du caractère "é" par un caractère "é" copié d'un nom de fichier qui ne génère pas d'erreur, le traitement est fait sans erreur.
Pour certains des fichiers qui généraient une erreur, je suis certain qu'ils provenaient d'un Mac (et une forte suspicion pour tous les autres).
Est-ce qu'il faut utiliser une page de code spéciale qui conviendrait à la fois aux fichiers générés par Windows et aux fichiers générés par Mac ? Ou bien y a-t-il une autre solution ?

Merci d'avance
Denis

Configuration: Windows / Edge 83.0.478.64

2 réponses

NHenry Messages postés 15163 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 1 novembre 2024 345
14 août 2020 à 01:46
C'est dans le stockage des noms de fichiers, en UTF8 il y a 2 manière de le stocker :
Soit directement le code correspondant au é soit le E + l'accent.
Sur mac il préfère la 2ième solution tandis que partout ailleurs c'est la première qui est privilégiée.
0
Merci!
Y a-t-il dans DOS de possibilité de travailler indistinctement sur les 2 codages de "é" ?
ou bien faut-il
- soit faire une conversion au préalable (qui serait peut-être équivalente à la commande iconv d'unix) ? e.g. changer le codage UTF8 en MS-DOS...
- soit écrire à chaque fois un test pour s'adapter à chacun des 2 cas ? Mais je ne suis pas arrivé à écrire un code qui gère les codages "e+accent"... Le code suivant ne marche qu'avec un seul des 2 codages:

Setlocal enabledelayedexpansion
for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
chcp 1252>nul
Set Pattern= réc
Set Replace= rec

For %%# in (*.doc) Do (
Set "File=%%~nx#"
Ren "%%#" "!File:%Pattern%=%Replace%!"
)

chcp %cp%>nul


Merci encore pour votre aide.
Denis
0