cmd:
Код:

chcp 1251
set "fld=C:\111\"
set "flt=*.txt"
pushd "%fld%"
for /f "delims=" %%x in ('dir /b/s/a-d "%flt%"') do (
chcp 1251 > nul
CMD /U /C Type "%%x" > "%%xtemp"
del "%%x"
move "%%xtemp" "%%x"
)
iconv: (нужно добавить путь к папке, в которой лежит iconv.exe в Мой компьютер - свойства - дополнительные параметры системы - переменные среды - Path - изменить - изменить текст - добавить ;C:\iconv\ )
Код:

chcp 1251
set "fld=C:\111\"
set "flt=*.txt"
pushd "%fld%"
for /f "delims=" %%x in ('dir /b/s/a-d "%flt%"') do (
iconv --binary -f windows-1251 -t UTF-16LE "%%x" > "%%xtemp"
del "%%x"
move "%%xtemp" "%%x"
)
Цитата YuS_2:
Можно поинтересоваться почему именно в cmd требуется? »
|
Хотя бы затем, что представленные в этой теме PS скрипты в Win7 требуют Windows Management Framework 3.0 (KB2506143) + есть вероятность необходимости настраивать Set-ExecutionPolicy
Никто же не говорит, что решение на PS плохое или нерабочее, но почему бы не иметь два разных вида решений (PS и bat), и уже из них выбирать?
Прогон на тестовой сборке:
cmd 141сек UTF-16LE-BOM
iconv 95сек UTF-16LE-BOM
PowerShell ($sContent = Get-Content) 60сек UTF-16LE+BOM, лишняя строка в конце
PowerShell ($content = gc) 47сек UTF-16LE+BOM, лишняя строка в конце
PowerShell ($content = [io.file]) 40сек UTF-16LE+BOM
все пять решений работают с подпапками в режиме замены старых файлов