Имя: Пароль:
IT
Админ
Кодировка в cmd-файле
0 andrewks
 
06.11.10
22:54
в общем, надо из cmd-файла записать в файл текст в вин1251. погуглил, нашел вариант с chcp. пишу cmd в оем-кодировке:
echo привет>cod.txt
chcp 1251 >nul
echo привет>>cod.txt

в итоге в выходном файле весь текст все равно в оеме. ЧЯНТД?
1 VasilyKushnir
 
06.11.10
22:59
А что дальше с текстовым файлом делаешь? 1С читает обе кодировки вообще-то...
2 andrewks
 
06.11.10
23:00
prm д.б. в вин1251
3 smaharbA
 
06.11.10
23:02
чо за бред ?
4 andrewks
 
06.11.10
23:04
(3) почему бред?
5 Aleksey
 
06.11.10
23:05
Только что проверил, записал в кодировки винды
6 andrewks
 
06.11.10
23:06
(5) пля, что может быть? xp sp3
7 le_
 
06.11.10
23:08
(0) Просто ты сначала создаешь файл в досовской кодировке, а потом дописываешь его (>>).
Сначала chcp сделай, а потом создавай файл.
8 Aleksey
 
06.11.10
23:08
(6) Правда он и без этой команды писал в кодировки винды
9 andrewks
 
06.11.10
23:10
(7) так я тоже пробовал, результат идентичный.
10 Aleksey
 
06.11.10
23:10
(7) А без разницы
chcp 866
echo привет 866>cod.txt
chcp 1251
echo привет 1251>cod2.txt

записал в обоих файлах по русски
11 andrewks
 
06.11.10
23:11
(10) а кодировки какие сделал?
12 Aleksey
 
06.11.10
23:11
(11) Не в ту сторону копаещь
http://citforum.ru/operating_systems/novelldos/chcp.shtml
13 andrewks
 
06.11.10
23:15
(12) в ту. нашел на одном форуме вариант через файл:

@echo off
chcp 866 >nul
echo Привет!>test.txt
for /f "tokens=*" %%a in (test.txt) do call :convert %%a
goto :eof

:convert
chcp 1251 >nul
echo %*>>test2.txt
chcp 866 >nul

:eof

так в итоге в test.txt оем, в test2.txt вин1251. а почему ж напрямую не пашет? нешто через изврат только можно?
14 smaharbA
 
06.11.10
23:15
http://www.n-d.ru/images/1251.bat

http://www.n-d.ru/images/866.bat

найди небольшое отличие, а если надо писать всегда в 866, а получать и ту и другую подход несколько иной
15 smaharbA
 
06.11.10
23:16
(13) тебе конвертировать ?
16 andrewks
 
06.11.10
23:19
(15) у меня на входе текстофайло в кодировке оем (хотя могу подавать и в вин1251, не важно). мне его нужно обработать и раскидать в кучку файлов, при этом часть надо сохранить в оем, часть - в вин1251
17 Aleksey
 
06.11.10
23:20
Пример на VBS
Set st = CreateObject("ADODB.Stream")
st.Type=2
st.Open
st.Charset = "windows-1251"
st.WriteText("привет")
st.SaveToFile("c:\cod.txt")
18 andrewks
 
06.11.10
23:23
(17) через vbs знаю, но не хочу, на серваке убрал все скрипточитатели в целях безопасности, хочу cmd замутить
19 andrewks
 
06.11.10
23:30
(14) получается, ему поуй на chcp, он пишет в такой же кодировке, как записано в cmd. т.е. если в cmd записать в вин1251:
echo off
set chcp=866
chcp %chcp% > nul
echo Вася Пупкин > test.txt

он запишет test.txt также в вин1251.
20 smaharbA
 
06.11.10
23:31
(19) ему не пох, думай
21 le_
 
06.11.10
23:36
Вот решение:

cmd /k chcp 1251 && echo | echo Привет! > c:\win.txt
22 andrewks
 
06.11.10
23:39
не понял. ты эту конструкцию в cmd файле пишешь? или где?
23 le_
 
06.11.10
23:40
Пуск - Выполнить, туда копируй эту строку.
24 le_
 
06.11.10
23:41
Можно и в батник засунуть.
25 le_
 
06.11.10
23:45
Батник такой будет:

chcp 1251
echo | echo Привет! > c:\win.txt
26 andrewks
 
06.11.10
23:45
(24) в батнике не взлетает.
27 andrewks
 
06.11.10
23:46
+(26) он все равно пишет в той кодировке, в какой в cmd это слово прописано
28 smaharbA
 
06.11.10
23:47
(процедуру обрезал, то там масса кодировок)

echo off
set chcp=866
chcp %chcp% > nul
echo Вася Пупкин > %~dp0%chcp%.txt
call :iconv Вася Пупкин
echo %iconv% > %~dp0\1251.txt
echo Вася Пупкин > %~dp0%chcp%-2.txt

:iconv (table,from,to,input) {
   @@rem Процедура коневертации кодировок, через файл для универсальности
   @@rem
   setlocal
   chcp 866> nul
   set out=%~0
   if "%out:~0,1%"==":" (
       set out=%out:~1%
       ) else (
       set out=out
       )
   set ret=%*
   chcp 1251 > nul
   endlocal & set %out%=%ret%
   exit /b 0
   }
29 smaharbA
 
06.11.10
23:49
форум немного испоганил, в ифе нет знака меньше
30 andrewks
 
06.11.10
23:52
(28) ого. т.е. я правильно понял, что взлетит только ч/з промежуточный файл?
31 smaharbA
 
06.11.10
23:53
(30) нет, в (28) нету файла, этот коментарий от гораздо большей процедуры
32 andrewks
 
06.11.10
23:54
(31) понял, спасибо, буду изучать.