Edit: Eu estava errado;)
cmd.exeaceita UTF-8, mas você precisa salvá-lo sem o BOMno início do arquivo.
Aqui está um segundo teste. Você pode usar chcp 65001no início do seu arquivo em lotes.

Um arquivo em lotes não pode ser do tipo UTF-8. Ele precisa ser ASCII. Cmd.exesimplesmente não aceita outro formato. Fiz um pequeno teste e você pode usar seus personagens, mas ele precisa de algum trabalho.
Faça um arquivo test.batcom echo Å Ä Ö. Salve-o com o formato ANSI/ASCII. Abra a cmd.exee verifique se seus cmd.exeusos Lucida Console(para exibir os caracteres Unicode).
Quando você digita o arquivo, ele mostra caracteres como os caracteres antigos do DOS. Você pode ver um gráfico de tradução aqui .
Quando você alterna para uma página de código "Windows Ansi" (ou seja, latim da Europa Ocidental) com chcp 1252os caracteres é exibida corretamente. Se eles também forem transferidos para seus respectivos utilitários, depende desse utilitário.
Mas por que você está criando um arquivo em lotes para isso? Você não pode simplesmente codificá-lo no VB.net?

Editar 2 #:
Isto é como você definir Lucida Consoleem cmd.exe:

O BOMsão 3 caracteres no início de um arquivo UTF-8. ( \xEF\xBB\xBF)
Em VB.net você criar um arquivo sem um BOMcomo este:
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
'^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
sink.WriteLine("...")
End Using