Войти

Показать полную графическую версию : Windows 7 (x86) Сохраняет в кривой кодировке txt файл из консоли


MarShaLL22
01-04-2014, 09:34
Имеем такой вот обычный код:
chcp 1251
echo %date% %time% %computername% %username% >> \\10.107.50.104\Logons\logons.txt
ipconfig >> \\10.107.50.104\Logons\logons.txt
В результате работе которого на "Семёрках", получаем закономерный результат, такого вот вида:
01.04.2014 17:28:41,68 MARSHALLPC marshall

Ќ*бва®©Є* Їа®в®Є®«* IP ¤«п Windows


Ethernet adapter Local:

DNS-бгддЁЄб Ї®¤Є«озҐ*Ёп . . . . . :
‹®Є*«м*л© IPv6-*¤аҐб Є***«* . . . : fe80::9c4a:49db:dacf:1c80%21
IPv4-*¤аҐб. . . . . . . . . . . . : 10.107.2.6
Њ*бЄ* Ї®¤бҐвЁ . . . . . . . . . . : 255.255.255.0
Ћб*®ў*®© и«о§. . . . . . . . . : 10.107.2.1

’г**Ґ«м*л© *¤*ЇвҐа Џ®¤Є«озҐ*ЁҐ Ї® «®Є*«м*®© бҐвЁ* 9:

‘®бв®п*ЁҐ б।л. . . . . . . . : ‘।* ЇҐаҐ¤*зЁ *Ґ¤®бвгЇ**.
DNS-бгддЁЄб Ї®¤Є«озҐ*Ёп . . . . . :

’г**Ґ«м*л© *¤*ЇвҐа isatap.{39319E9A-3191-4697-B1F9-E2C543B48BA7}:

‘®бв®п*ЁҐ б।л. . . . . . . . : ‘।* ЇҐаҐ¤*зЁ *Ґ¤®бвгЇ**.
DNS-бгддЁЄб Ї®¤Є«озҐ*Ёп . . . . . :

’г**Ґ«м*л© *¤*ЇвҐа isatap.{753FB36C-5C6C-48FF-9403-99128188C8BC}:

‘®бв®п*ЁҐ б।л. . . . . . . . : ‘।* ЇҐаҐ¤*зЁ *Ґ¤®бвгЇ**.
DNS-бгддЁЄб Ї®¤Є«озҐ*Ёп . . . . . :
На XP сохраняется нормально, в читабельном виде, в киррилице.
Хитрость с chcp 1251 в начале батнике не срабатывает.
Но эта же хитрость, работает если код переписать на такой:
chcp 1251
echo %date% %time% %computername% %username% >> \\10.107.50.104\Logons\logons.txt
netsh interface ip show address >> \\10.107.50.104\Logons\logons.txt
То есть тоже делает читабельный вид в киррилице.
Отсюда вопрос, камрады, что не так в "Семерке" с командой ipconfig и вывод оной в txt файл, читабельного вида.
Если кто знает, как реализовать нормально тоже самое, но в vbs, подскажите, это и будет решением.

Bruce Wayne
01-04-2014, 10:21
MarShaLL22, попробуйте chcp 1251 заменить на chcp 866 или сохраните скрипт в кодировке 866 (OEM - русская) с помощью такого текстового редактора, как, например AkelPad.

MarShaLL22
01-04-2014, 10:29
попробуйте chcp 1251 заменить на chcp 866 или сохраните скрипт в кодировке 866 (OEM - русская) с помощью такого текстового редактора, как, например AkelPad. »
Аналогично.

Bruce Wayne
02-04-2014, 19:46
MarShaLL22, похоже, единственный способ здесь - сменить шрифт текстового редактора на Terminal. :teeth:

Foreigner
02-04-2014, 20:13
что не так в "Семерке" с командой ipconfig »
Это не с 7-ой. ipconfig всегда выводил кириллицу в ОЕМ-кодировке (866). Можно перекодировать сам файл или перекодировать на лету.

@echo off
setlocal

1>>\\10.107.50.104\Logons\logons.txt echo %date% %time% %computername% %username%
for /f "tokens=*" %%i in ('ipconfig') do call:1 "%%i"
goto:eof

:1
1>nul chcp 1251
1>>\\10.107.50.104\Logons\logons.txt echo %~1
1>nul chcp 866

Но здесь потеряется форматирование вывода.

Я бы использовал iconv (http://gnuwin32.sourceforge.net/packages/libiconv.htm) (либо какую-нибудь подобную утилиту, много их):

echo %date% %time% %computername% %username% >> \\10.107.50.104\Logons\logons.txt
ipconfig | iconv -f cp866 -t cp1251 >> \\10.107.50.104\Logons\logons.txt

Georgio
02-04-2014, 20:37
Но здесь потеряется форматирование вывода. »


Foreigner, а если так: for /f "delims=" %%i in ('ipconfig') do call:1 "%%i" и (на всякий случай) так: echo.%~1?

Да и пустые строки можно попробовать сохранить, если это, конечно, так необходимо.

Eugene Shugaev
05-04-2014, 19:41
Дам совет, установи notepad++ и в разделе кодировки выбери кирилица и OEM 866 или другуя в том разделе, тогда и сможешь причитать.




© OSzone.net 2001-2012