#pragma compile(Console, True) ; консольное приложение, можно использовать в .bat
Opt('MustDeclareVars', True)
#include <FileConstants.au3>
Local Const $cnErrOpen = -1 ; признак облома FileOpen
Local $sFileAnsi, $sFileUTF, _ ; имена входного и вых. файлов
$hRead, $hWrite, _ ; хендлы их же
$sText ; данные
If $CmdLine[0] < 2 Then ; «защита от дурака» #1
i_Error('Missing parameter(s)!')
Exit 362
EndIf
; параметры запуска скрипта: <файл-источник> <файл-результат>
;
$sFileAnsi = $CmdLine[1]
$sFileUTF = $CmdLine[2]
;
$hRead = FileOpen($sFileAnsi, $FO_ANSI)
If $hRead = $cnErrOpen Then ; «защита от дурака» #2
i_Error('Cannot open source file ' & $sFileAnsi)
Exit 432
EndIf
;
$hWrite = FileOpen($sFileUTF, $FO_UTF8 + $FO_OVERWRITE) ; или вместо $FO_UTF8 мб $FO_UTF8_NOBOM если не нужен маркер кодировки
If $hWrite = $cnErrOpen Then ; «защита от дурака» #3
i_Error('Cannot open target file ' & $sFileUTF)
Exit 470
EndIf
;
$sText = FileRead($hRead)
FileWrite($hWrite, $sText)
FileClose($hWrite)
FileClose($hRead)
ConsoleWrite('Ok!' & @CRLF)
Exit 0
;
Func i_Error($sMsg) ; вывод сообщений об ошибке в одном стиле
ConsoleWrite('*** Error *** ' & $sMsg & @CRLF)
EndFunc