Редактировать: я был не прав;)
cmd.exe принимает UTF-8, но вы должны обязательно сохранить его без BOM в начале файла.
Вот второй тест. Вы можете использовать chcp 65001 в начале вашего пакетного файла.

Пакетный файл не может быть типа UTF-8. Это должен быть ASCII. Cmd.exe просто не принимает другой формат. Я сделал небольшой тест, и вы можете использовать своих персонажей, но это требует некоторой работы.
Сделайте файл test.bat с помощью echo Å Ä Ö . Сохраните его в формате ANSI/ASCII . Откройте cmd.exe и убедитесь, что ваш cmd.exe использует Lucida Console (для отображения символов Unicode).
Когда вы набираете файл, он будет отображать символы как старые DOS-символы. Вы можете увидеть таблицу перевода здесь.
При переключении на кодовую страницу Windows Ansi (т. Е. Западноевропейскую латиницу) с помощью chcp 1252 символы отображаются правильно. Если они также будут переведены в их соответствующие утилиты, зависит от этой утилиты.
Но почему вы создаете пакетный файл для этого? Вы не можете просто написать код на VB.net?

Изменить 2 #:
Вот как вы устанавливаете Lucida Console в cmd.exe:

BOM состоит из 3 символов в начале файла UTF-8. (\xEF\xBB\xBF).
В VB.net вы бы создали файл без BOM например:
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
'^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
sink.WriteLine("...")
End Using