Edit: je me trompais;)
cmd.exen'accepte UTF-8 , mais vous devez être sûr de l' enregistrer sans le BOMdébut du fichier.
Voici un deuxième test. Vous pouvez utiliser chcp 65001au début de votre fichier batch.

Un fichier batch ne peut pas être de type UTF-8. Il doit être ASCII. Cmd.exen'accepte tout simplement pas un autre format. J'ai fait un petit test et vous pouvez utiliser vos personnages mais cela demande du travail.
Créez un fichier test.batavec echo Å Ä Ö. Enregistrez-le au format ANSI/ASCII. Ouvrez un cmd.exeet assurez-vous de vos cmd.exeutilisations Lucida Console(pour afficher les caractères Unicode).
Lorsque vous tapez le fichier, il affiche les caractères comme les anciens caractères DOS. Vous pouvez voir un tableau de traduction ici .
Lorsque vous passez à une page de codes "Windows Ansi" (c'est-à-dire latin d'Europe occidentale), chcp 1252les caractères s'affichent correctement. S'ils sont également transférés vers leurs utilitaires respectifs, cela dépend de cet utilitaire.
Mais pourquoi créez-vous un fichier batch pour cela? Ne pouvez-vous pas simplement le coder dans VB.net?

Modifier 2 #:
Voici comment vous définissez Lucida Consoledans cmd.exe:

Il BOMy a 3 caractères au début d'un fichier UTF-8. ( \xEF\xBB\xBF).
Dans VB.net vous créez un fichier sans un BOMcomme celui - ci:
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
'^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
sink.WriteLine("...")
End Using