 |
|
Слияние txt и вывод всех файлов в Unicode
Добрый день! Есть множество txt файлов в определенной папке. Подскажите как их все переделать в кодировку Unicode (UCS-2 LE BOM)
P.S. Началось с того, что требовалось собрать объединение содержимого (есть русский язык) одноимённых текстовых файлов из нескольких соседних директорий.
Нашел код:
Код:
@echo off
chcp 1251
2>nul del/a/f *.txt
for /f "delims=" %%i in ('2^>nul dir/a-d/b/s "*.txt"') do (
set "*%%~nxi=*"
)
for /f "delims=*=" %%i in ('set *') do (
for /f "delims=" %%j in ('2^>nul dir/a-d/b/s "%%i"') do (
<"%%j">>"%%i" more
)
)
exit/b
В конечном итоге все файлики меняли свою кодировку с Unicode (UCS-2 LE BOM) на ANSI (win 1251). Как сделать так чтобы кодировка файлов оставалась неизменной?
P.S.S.
Видел такую схему для смены перекодировки:
Код:
@Echo Off
SetLocal EnableExtensions
Set $FILE=File.txt
Set $TEMP=File.tmp
CHCP 1251
Echo яю>%$TEMP%
CMD /U /C Type %$FILE% >>%$TEMP%
If Exist %$TEMP% DEL /F/Q %$FILE%
REN %$TEMP% %$FILE%
В итоге в каждом файле появлялся квадратик в начале 1-ой строки.
|
Цитата:
Цитата ask2886
Как сделать так чтобы кодировка файлов оставалась неизменной? »
|
Использовать WSH/PoSH.
|
другое порой напрягает.
Когда копи-пасте операцию выполняешь русского текста из non-Unicode приложения в Unicode-приложение.
Как правило вставляет кракозябры.
Может изобретаю велосипед, но пришлось делать перекодировщик для clipboard, который это поправляет.
|
А если пойти по 2-ому пути: допустим что все файлики поменяли кодировку, как второй батник применить к множеству текстовых файлов, а затем в каждом txt удалить первый символ 1ой строки?
|
Цитата:
Цитата Опиум
Когда копи-пасте операцию выполняешь русского текста из non-Unicode приложения в Unicode-приложение.
Как правило вставляет кракозябры.
Может изобретаю велосипед, но пришлось делать перекодировщик для clipboard, который это поправляет. »
|
Достаточно просто переключить язык ввода в приложении перед копированием на русский.
Я же лично тупо делаю подмену кодовых страниц Windows (1252--->1251 и т.д.). Говорят, могут быть некоторые проблемы, но я пока не сталкивался.
Цитата:
Цитата ask2886
А если пойти по 2-ому пути: »
|
ask2886, проще не идти.
Если опишете исходную задачу, думаю, Вам помогут.
|
Цитата:
Цитата Iska
тупо делаю подмену кодовых страниц Windows (1252--->1251 и т.д.). »
|
да, на какихто компах у меня поправлен так реестр.
А про предварительное переключение раскладки - не слылшал. Век живи - век учись (с)
|
Цитата:
Цитата Опиум
А про предварительное переключение раскладки - не слылшал. »
|
Угу. То есть, оно бы как бы и не обязательно делать подмену, просто у меня умолчальным языком ввода стоит, как правило, en-us.
|
Цитата:
Цитата Iska
Если опишете исходную задачу, думаю, Вам помогут. »
|
Ну собственно исходная задача, это объединение содержимого одноимённых текстовых файлов (кодировка Unicode), находящиеся в соседних папках. Полученные файлы должны быть тоже в кодировке unicode.
|
Цитата:
Цитата ask2886
находящиеся в соседних папках. »
|
- Что значит «в соседних»? Поясните.
- В каком порядке должно осуществляться слияние? Или это несущественно?
|
Цитата:
Цитата Iska
Что значит «в соседних»? Поясните.
В каком порядке должно осуществляться слияние? Или это несущественно? »
|
Может не совсем корректно выразился: имелось ввиду: есть папка, в ней - папка1, папка2, папка3.
Слияние осуществлять следующим образом:
файл1.txt папки1
1строка
2строка
файла1.txt папки2
3строка
4строка
файл1.txt папки3
5стркоа
6строка
в итоге:
файл1.txt
1строка
2строка
3строка
4строка
5строка
6строка
и так со всеми файлами, имеющие одинаковые названия в разных папках.
|
ask2886, Если кодировка UTF-8, то достаточно обычной консоли, если unicode (UTF-16), то тогда необходимо запустить cmd с ключом /u. После этого просто перенаправляете вывод нужных файлов в результирующий:
Код:
type 1.txt 2.txt > 3.txt
|
Цитата:
Цитата Iska
Угу. То есть, оно бы как бы и не обязательно делать подмену, просто у меня умолчальным языком ввода стоит, как правило, en-us. »
|
специально проверил сейчас - не работает((
неюникодовская гуёвина выдала сообщение на русском (в memo)
копи - пасте(в аутлук 2003)- краказябры. Независимо от включенной расладки на момент пасте.
|
Цитата:
Цитата Опиум
Независимо от включенной расладки на момент пасте. »
|
Добавьте к этому (точнее, предварите это) «язык ввода русский» на момент copy.
|
Время: 10:58.
© OSzone.net 2001-