![]() |
конвертировать ANSI в Unicode с фильтром
Помогите доделать скрипт, чтобы в заданной папке поменять кодировку с ANSI на Unicode у всех файлов
с выбором фильтра, например только "*.txt" файлы или только "*.ini" или только "*file*.txt" тут в примере только по одному файлу вручную забивать, да и "%tmp%" не работает, приходится писать "set tmp=D:\1.txt" Код:
:ToUNICODE src dst -- converts a file to UNICODE |
shadowbat, iconv.exe в качестве альтернативы не смотрели.
Точно её возможности не знаю, но посмотреть можно. самый простой пример Код:
iconv -c -f utf-8 -t cp1251 1.txt 1>2.txt Код:
iconv -c -f utf-8 -t cp1251 1.txt 1>1.tmp && move 1.tmp 1.txt |
Цитата:
Цитата:
В общем и целом — используйте PowerShell для решения данной задачи. |
Цитата:
Да, можно UTF-16LE/1200 Можно с BOM Но, насколько я понимаю "cmd /U /c type" не позволяет настраивать такие параметры как вид Юникода и BOM? и создаёт UTF-16LE/1200 без BOM, это не критично Цитата:
|
Как-то так (без каких-либо проверок):
Код:
Get-ChildItem -Path 'C:\Мои проекты\0254' -Recurse -Filter '*.txt' -File |` |
Вложений: 1
1.
Для одной папки работает, как сделать, чтобы он работал на папку с подкаталогами? (нужно добавить в %PATH% путь к iconv) Код:
set dirr=C:\111\ Как добавить сюда работу с подкаталогами? (без добавления в %PATH%) Работает только для одной папки all.cmd: Код:
for /R %%i in (.) do call txt.cmd %%i Код:
set cd2=%cd% Код:
iconv -c -f KOI8-R -t CP1251 %1 > win.%1 |
Цитата:
Цитата:
CMD утилита iconv имеет свой синтаксис, скачивать её для проверки - нет желания, так что проверьте строку для её запуска, перед использованием... Код:
set "fld=c:\1\" Выше предложили уже вариант на powershell... Его можно ускорить в обработке: Код:
$fld = 'c:\1' Код:
$fld = 'c:\1' |
cmd:
Код:
chcp 1251 Код:
chcp 1251 Цитата:
Никто же не говорит, что решение на 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 все пять решений работают с подпапками в режиме замены старых файлов |
Цитата:
расставить везде стороннее приложение и запускать его - это не "через bat", и по сложности аналогично обновлению PoSh до актуальной версии переписать под старую версию PoSh несложно |
Цитата:
Код:
... |
Цитата:
|
Время: 23:19. |
Время: 23:19.
© OSzone.net 2001-