Centrum skryptów - Systemy operacyjne

Jak określić domyślną wielkość bufora okna poleceń?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak określić domyślną wielkość bufora okna poleceń?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Jak określić domyślną wielkość bufora okna poleceń?

-- GO

Cześć Skrypciarze! Odpowiedź

Cześć, GO. Być może niektórzy z Was zastanawiają się, dlaczego zdecydowaliśmy się na pisanie codziennych artykułów o skryptach, zamiast np. prowadzić w telewizji poświęcony im codzienny program na żywo. Stało się tak z kilku powodów. Jednym z nich jest to, że nawet firmy Microsoft nie stać na wydatki związane z makijażem, jaki byłby potrzebny, by móc pokazać Skrypciarzy w telewizji. Innym powodem jest to, że aby występować w telewizji trzeba być na tyle uważnym, by nie robić za wielu błędów. W przeciwnym razie wychodzi się na osła. A Skrypciarze nigdy nie ryzykują znalezienia się w sytuacji, w której coś mogłoby naruszyć ich pełen godności wizerunek profesjonalistów.

I tak na przykład, Skrypciarz piszący te słowa oglądał wczoraj w telewizji mecz koszykówki, kiedy komentator wspomniał o kimś, kto „umarł niedawno na śmierć”. Co prawda Skrypciarz piszący te słowa nie jest lekarzem (za co cały świat jest mu niezmiernie wdzięczny), ale zaczął się zastanawiać: skoro już mamy umrzeć, czy nie lepiej byłoby umrzeć nie na śmierć? Śmierć na śmierć wydaje się dużo groźniejsza.

Nie mówiąc już o tym, że przez nią komentator wydaje się osłem.

Tak czy inaczej, dlatego właśnie Skrypciarze nie prowadzą programu na żywo – nie działa tam polecenie Cofnij. I tak, pisząc dzisiejszy skrypt, Skrypciarz piszący te słowa pomylił się przy poleceniu Wscript.Echo. Ale po wersji ostatecznej tego nie widać:

HKEY_CURRENT_USER = &H80000001



strComputer = "."



Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")



strKeyPath = "Console"

strValueName = "HistoryBufferSize"



objRegistry.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue



Wscript.Echo dwValue

<p>Jak się okazuje, GO, domyślna wielkość bufora zapisana jest w rejestrze wraz z innymi ustawieniami okna poleceń; aby ją sprawdzić, wystarczy odczytać odpowiednią wartość rejestru.</p>
<p>Do dzieła zatem. Na początek definiujemy stałą o nazwie HKEY_CURRENT_USER, której wartość ustalamy na &amp;H80000001; instruuje to skrypt, z którą gałęzią rejestru chcemy pracować. Następnie łączymy się z usługą WMI na komputerze lokalnym, chociaż, podobnie jak w większości skryptów WMI, moglibyśmy się równie dobrze połączyć z komputerem zdalnym. Należałoby w tym celu zmiennej strComputer przypisać nazwę komputera:</p>

strComputer = "atl-fs-01"

<p>Jak dotąd idzie nam dobrze. Po połączeniu z usługą WMI (zwróćmy uwagę, że łączymy się z przestrzenią nazw <strong>root\Default</strong>, a nie z root\cimv2) przypisujemy wartości dwóm zmiennym - strKeyPath i strValueName:</p>

strKeyPath = "Console"

strValueName = "HistoryBufferSize"

Za pomocą wartości strKeyPath wskażemy odpowiednią ścieżkę rejestru w gałęzi HKEY_CURRENT_USER; wartość rejestru oznaczająca wielkość bufora zapisana jest pod adresem HKEY_CURRENT_USER\Console, więc zmiennej strKeyPath przypiszemy wartość Console. Jednocześnie zmiennej strValueName przypisujemy nazwę interesującej nas wartości. A ponieważ interesuje nas wartość rejestru o nazwie HistoryBufferSize, to ją właśnie przypisujemy zmiennej strValueName.

Jesteśmy teraz gotowi do pobrania wartości z rejestru – użyjemy do tego metody GetDWORDValue:

objRegistry.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue

Jak widać, wywołujemy po prostu metodę GetDWORDValue z czterema parametrami: stałą HKEY_CURRENT_USER; zmiennymi strKeyPath i strValueName; oraz parametrem wyjściowym dwValue. Parametr wyjściowy to nic innego niż zmienna (wybrana przez nas), której metoda przypisze wartość; w naszym wypadku oznacza to, że metoda GetDWORDValue odczyta wartość HistoryBufferSize i przypisze ją zmiennej dwValue. Teraz wystarczy tylko wyświetlić tę wartość:

Wscript.Echo dwValue

I gotowe.

Domyślna wielkość bufora historii wynosi 50, ale można przypisać jej dowolną wartość od 1 do 999. Jak to zrobić? Oto jedna z możliwości:

HKEY_CURRENT_USER = &H80000001



strComputer = "."



Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")



strKeyPath = "Console"

strValueName = "HistoryBufferSize"

dwValue = 250



objRegistry.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue

Nie będziemy szczegółowo omawiać tego dodatkowego skryptu, wyjaśniamy tylko, że zmienia on wielkość bufora historii na 250. Aby zmienić go na jakąś inną wartość, wystarczy zmodyfikować ten wiersz:

dwValue = 250

A przy okazji – wiemy, że wielu z Was pisze już maile, chcąc zwrócić uwagę, że mamy tu mnóstwo zdań całkowicie pozbawionych sensu, mimo że nie jest to program na żywo. Wyjaśniamy więc, że wszelkie takie zdania pochodzą tylko i wyłącznie od naszej Redaktorki. Przepraszamy za wszelkie kłopoty jakie mogła ona spowodować.

 Do początku strony Do początku strony

Centrum skryptów - Systemy operacyjne