Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Windows 7 (x86) Сохраняет в кривой кодировке txt файл из консоли (http://forum.oszone.net/showthread.php?t=280137)

MarShaLL22 01-04-2014 09:34 2331336

Windows 7 (x86) Сохраняет в кривой кодировке txt файл из консоли
 
Имеем такой вот обычный код:
Код:

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 2331356

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

MarShaLL22 01-04-2014 10:29 2331363

Цитата:

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

Аналогично.

Bruce Wayne 02-04-2014 19:46 2332216

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

Foreigner 02-04-2014 20:13 2332236

Цитата:

Цитата MarShaLL22
что не так в "Семерке" с командой 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 (либо какую-нибудь подобную утилиту, много их):
Код:

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 2332246

Цитата:

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


Foreigner, а если так:
Код:

for /f "delims=" %%i in ('ipconfig') do call:1 "%%i"
и (на всякий случай) так:
Код:

echo.%~1
?

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

Eugene Shugaev 05-04-2014 19:41 2333563

Дам совет, установи notepad++ и в разделе кодировки выбери кирилица и OEM 866 или другуя в том разделе, тогда и сможешь причитать.


Время: 03:04.

Время: 03:04.
© OSzone.net 2001-