Тема: CMD/BAT: перекодировка текста dos866↔win1251
Есть немало консольных утилит для перекодировки текста, но многие забывают про встроенные возможности.
@echo off
if [%2]==[] (
echo Convert dos866 to win1251
echo Usage: dos2win input.file output.file
exit /b 1
)
set out=%2
chcp 866 >nul
for /f "tokens=*" %%a in (%1) do call :convert %%a
goto :eof
:convert
chcp 1251 >nul
echo %*>>%out%
chcp 866 >nul
Ну и, аналогично, наоборот:
@echo off
if [%2]==[] (
echo Convert win1251 to dos866
echo Usage: win2dos input.file output.file
exit /b 1
)
set out=%2
chcp 1251 >nul
for /f "tokens=*" %%a in (%1) do call :convert %%a
goto :eof
:convert
chcp 866 >nul
echo %*>>%out%
chcp 1251 >nul
Решение придумал 01MDM, на энтузиазме которого очень активно функционирует топик по CMD/BAT в ru-board.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.