Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата shadowbat:
Для одного файла работает »
Работает?! Так не бывает...вернее, в таком виде работать не будет и не должно...

Цитата shadowbat:
Это же можно сделать и через bat? »
Можно поинтересоваться почему именно в cmd требуется? В смысле, не совсем понятно, зачем привлекать в систему посторонние средства, если в ней уже заложены инструменты для решения задачи?

CMD
утилита iconv имеет свой синтаксис, скачивать её для проверки - нет желания, так что проверьте строку для её запуска, перед использованием...
Код: Выделить весь код
set "fld=c:\1\"
set "flt=*.txt"

pushd "%fld%"
for /f "delims=" %%x in ('dir /b/s/a-d "%flt%"') do (
    iconv --binary -f windows-1251 -t UTF-8 %%x
)
popd
Powershell
Выше предложили уже вариант на powershell...
Его можно ускорить в обработке:
Код: Выделить весь код
$fld = 'c:\1'
$flt = '*.txt'
# default - кодировка активной кодовой страницы системы.
$encin = 'default'
# unicode - кодировка UTF-16 LE
$encout = 'unicode'

dir $fld -filt $flt -file -rec|%{
    ($content = gc $_.fullname -enc $encin -raw)|
    sc $_.fullname -enc $encout
}
либо немного другой вариант, с более широкими возможностями в выборе кодировки:
Код: Выделить весь код
$fld = 'c:\1'
$flt = '*.txt'
# Доступные кодировки: [text.encoding]::getencodings()
$encin = [text.encoding]::getencoding("windows-1251")
$encout = [text.encoding]::getencoding("utf-16")

filter recode-file {
	$content = [io.file]::readalltext($_.fullname, $encin)
	[io.file]::writealltext($_.fullname, $content, $encout)
}

dir $fld -filt $flt -file -rec|recode-file
- кроме того, этот вариант не добавляет пустую строку в конец файла...

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 23-03-2019 в 09:05.

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:38, 23-03-2019 | #7