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

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

Гризлик 03-05-2018 00:15 2811809

Возврат исходной кодовой страницы
 
Здраствуйте!
Как можно узнать и запомнить текущую кодовую страницу системы и после выполнения произвольных команд, в конце батника её вернуть.
Строуктура батника:
Код:

***Выяснение текущей кодовой страницы и её запоминание*****
***смена кодовой страницы****
***выполнение основного тела батника***
***Возврат изначальной кодовой страницы***

Интересует первый и последний пункт. Текущая кодовая страница неизвестна.
Спасибо!

alpap 03-05-2018 00:52 2811810

Цитата:

Цитата Гризлик
текущую кодовую страницу системы »

что это такое?

Гризлик 03-05-2018 00:57 2811811

Извините может не правильно изначально назвал.
К примеру: текущая кодировка системы - windows 1251 На время выполнения батника её нужно сменить на OEM 866. А потом вернуть обратно. Но текущая кодировка изначально не известна.

ShaddyR 03-05-2018 01:32 2811814

Гризлик, а на кой возвращать обратно кодировку, если изменения действуют только в пределах текущего cmd-сеанса?

Гризлик 03-05-2018 02:01 2811822

Цитата:

Цитата ShaddyR
а на кой возвращать обратно кодировку, если изменения действуют только в пределах текущего cmd-сеанса? »

Т.е. в этом случае это бессмысленно? Я думал это все сохраняется.:)
Ну а так чисто технически как можно это сделать средствами батника? В дальнейшем мне может вполне это пригодится.
Точнее я догадываюсь до принципа работы - результат вывода какой-либо команды записать в переменую , и затем эту комнду с аргументами от этой переменной выполнить.
Но я совершено не разбираюсь с работой переменых в bat файле.

Поэтому можете показать как это сделать в bat файле?? Пожалуйста! Пусть идея с кодировками и лишина практического смысла, но меня интересует тех. сторона вопроса.
Спасибо!

Iska 03-05-2018 02:19 2811823

Гризлик, вообще на локализованной русской версии умолчальной кодовой страницей для консоли и так является OEM/866. Если вдруг у Вас оказывается, что умолчальной кодовой страницей для консоли является ANSI/1251:
Цитата:

Цитата Гризлик
К примеру: текущая кодировка системы - windows 1251 »

— значит, в системе порезвились чьи-то шаловливые ручки.

А так:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq tokens=2 delims=:" %%i in (`chcp`) do set sOldCP=%%~i
>nul chcp 866

echo bla-bla-bla
echo bla-bla-bla
echo bla-bla-bla

if defined sOldCP >nul chcp %sOldCP%

endlocal
exit /b 0


Гризлик 03-05-2018 02:39 2811824

Iska, Спасибо большое!!!!
А можно хотябы вкратце получить комментарии по двум строчкам. Что они делают
Код:

setlocal enableextensions enabledelayedexpansion

for /f "usebackq tokens=2 delims=:" %%i in (`chcp`) do set sOldCP=%%~i
>nul chcp 866


Iska 03-05-2018 03:05 2811825

Цитата:

Цитата Гризлик
Что они делают »

Именно вот это:
Цитата:

Цитата Гризлик
я догадываюсь до принципа работы - результат вывода какой-либо команды записать в переменую , и затем эту комнду с аргументами от этой переменной выполнить »



Время: 00:47.

Время: 00:47.
© OSzone.net 2001-