PDA

Показать полную графическую версию : [решено] Возврат исходной кодовой страницы


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

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

alpap
03-05-2018, 00:52
текущую кодовую страницу системы »
что это такое?

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

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

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

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

Iska
03-05-2018, 02:19
Гризлик, вообще на локализованной русской версии умолчальной кодовой страницей для консоли и так является 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
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
Что они делают »
Именно вот это:
я догадываюсь до принципа работы - результат вывода какой-либо команды записать в переменую , и затем эту комнду с аргументами от этой переменной выполнить »




© OSzone.net 2001-2012