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

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

Старожил


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

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


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

все пять решений работают с подпапками в режиме замены старых файлов

Последний раз редактировалось shadowbat, 23-03-2019 в 17:16.


Отправлено: 16:51, 23-03-2019 | #8