Как преобразовать пакетный файл, хранящийся в utf-8, во что-то, что работает через другой пакетный файл, и запустить его
========================================================================================================================

У меня есть программа, которую я использую для создания командного файла. Моя проблема в том, что вывод программы - UTF-8, поэтому, как только в моем пакетном файле появляются диакритические метки, такие как é, à, ö, Ä, происходит сбой. Кажется, я не могу найти способ преобразовать мой вывод во что-нибудь кроме UTF-8 в программе, которая создает командный файл.

Так что я думал о создании двух файлов Баха. Фактическое и другое, которое преобразует фактическое из UTF-8 в ANSI (кодовая страница Windows 1252 или, возможно, cp 850), а затем выполняет его после этого. Конечно, я бы добавил chcp xxxx в качестве первой команды фактического командного файла.

Поэтому мой вопрос: есть ли альтернатива iconv в Windows - или как преобразовать текстовый файл UTF-8 в кодовую страницу Windows, используя второй пакетный файл. Есть ли что-нибудь встроенное в Win XP и выше, что я мог бы использовать, или есть бесплатный и распространяемый инструмент, который я мог бы использовать для этого?

Примечание:

не работает для пакетных файлов.

**РЕДАКТИРОВАТЬ 1:**

В Windows XP я создал два командных файла для проверки первого ответа.

1.bat, закодированный в UTF-8 без спецификации, содержит:

2.bat также кодируется в UTF-8 без BOM - но без каких-либо специальных символов содержит:

Результирующий файл ansi\_file.bat, созданный при выполнении 2.bat, будет по-прежнему кодироваться в формате utf-8, а не в кодировке ANSI.

**РЕДАКТИРОВАТЬ 2:**

Упомянутый обратный процесс работает.

но ни одна из следующих последующих строк

возвращает меня в ANSI. Я пробовал это как на Win XP и Win 7. Кто-нибудь может помочь?

**НОТА:**

Я знаю, как использовать Windows Script Host и VBS. Я бы хотел избежать зависимости от хоста скрипта. Метод VBS подробно описан здесь:[http://msdn.microsoft.com/en-us/library/windows/desktop/aa368046%28v=vs.85%29.aspx](https://msdn.microsoft.com/en-us/library/windows/desktop/aa368046%28v=vs.85%29.aspx)

**РЕДАКТИРОВАТЬ 3:**

Созданный текстовый файл, содержащий Unicode ü выше, не является utf-8

Файл Unicode для Windows - HEX:

UTF-8 без спецификации будет HEX:

Решение VBS, связанное с, работает только с формой Unicode, но не работает в форме UTF-8. Мне нужно конвертировать UTF-8 в другую кодовую страницу, так что даже эта, кажется, не работает для меня ...

 что не хотите полагаться на хост скрипта, но нет собственной пакетной команды, которая могла бы делать то, что вы хотите. Вы собираетесь использоватьчто-то за пределами чистой партии. Хост скрипта является родным для Windows, поэтому я думаю, что это не будет проблемой.

Последующий**UTF8toANSI.vbs** Скрипт преобразует UTF-8 (с или без спецификации) в ISO-8859-1 (в основном то же, что кодовая страница 1252). Это адаптировано из[VB6 / VbScsript изменить файл / записать файл с кодировкой в ansii](https://stackoverflow.com/a/5186170/1012053).

Сценарий VBS должен находиться в вашем текущем каталоге или на вашем пути.

Пакетный скрипт для конвертации и запуска вашего UTF8-закодированного скрипта может выглядеть примерно так:

  
**Оригинальный ответ:** ниже мой оригинальный ответ, который работает для UTF-16 с спецификацией, но не для UTF-8

Вывод внутренних команд автоматически преобразуется в ANSI, если вывод передается по конвейеру или перенаправляется в файл.

Процесс может идти в обратном порядке, если CMD запускается с`/U` вариант, но, к сожалению, байты заголовка Unicode будут отсутствовать. Но, конечно, это не проблема для вашей ситуации.



Вы можете получить много утилит командной строки GNU из[GnuWin32](http://gnuwin32.sourceforge.net/) проект. Это включает`iconv` (и многое другое):



iconv" для преобразования между кодировками:

Кажется, сборка для Windows доступна на<http://gnuwin32.sourceforge.net/packages/libiconv.htm>