Показать полную графическую версию : [решено] Возврат исходной кодовой страницы
Здраствуйте!
Как можно узнать и запомнить текущую кодовую страницу системы и после выполнения произвольных команд, в конце батника её вернуть.
Строуктура батника:
***Выяснение текущей кодовой страницы и её запоминание*****
***смена кодовой страницы****
***выполнение основного тела батника***
***Возврат изначальной кодовой страницы***
Интересует первый и последний пункт. Текущая кодовая страница неизвестна.
Спасибо!
текущую кодовую страницу системы »
что это такое?
Извините может не правильно изначально назвал.
К примеру: текущая кодировка системы - windows 1251 На время выполнения батника её нужно сменить на OEM 866. А потом вернуть обратно. Но текущая кодировка изначально не известна.
Гризлик, а на кой возвращать обратно кодировку, если изменения действуют только в пределах текущего cmd-сеанса?
а на кой возвращать обратно кодировку, если изменения действуют только в пределах текущего cmd-сеанса? »
Т.е. в этом случае это бессмысленно? Я думал это все сохраняется.:)
Ну а так чисто технически как можно это сделать средствами батника? В дальнейшем мне может вполне это пригодится.
Точнее я догадываюсь до принципа работы - результат вывода какой-либо команды записать в переменую , и затем эту комнду с аргументами от этой переменной выполнить.
Но я совершено не разбираюсь с работой переменых в bat файле.
Поэтому можете показать как это сделать в bat файле?? Пожалуйста! Пусть идея с кодировками и лишина практического смысла, но меня интересует тех. сторона вопроса.
Спасибо!
Гризлик, вообще на локализованной русской версии умолчальной кодовой страницей для консоли и так является 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
Iska, Спасибо большое!!!!
А можно хотябы вкратце получить комментарии по двум строчкам. Что они делают setlocal enableextensions enabledelayedexpansion
for /f "usebackq tokens=2 delims=:" %%i in (`chcp`) do set sOldCP=%%~i
>nul chcp 866
Что они делают »
Именно вот это:
я догадываюсь до принципа работы - результат вывода какой-либо команды записать в переменую , и затем эту комнду с аргументами от этой переменной выполнить »
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.