Discussion:
Win7-32bit - dziwne zachowanie strony kodowej w command.com
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Leon Mazurek (inny)
2012-08-26 16:43:00 UTC
Permalink
Witam

Mam problem z konsolą command.com (nie cmd.exe), jej stroną kodową i
klawiaturą.
Uruchomienie konsoli i 2-krotne wydanie polecenia "mode con: cp"
skutkuje dwoma różnymi wynikami - patrz niżej

Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.

C:\WINDOWS\SYSTEM32>mode con: cp

Stan urządzenia CON:
--------------------
Strona kodowa: 852


C:\WINDOWS\SYSTEM32>mode con: cp

Stan urządzenia CON:
--------------------
Strona kodowa: 437


Pierwsze wywołanie podaje stronę 852 i niby jest OK bo widać polską
literę "ą", ale drugie podaje, że stroną kodową nie jest 852 tylko 437
mimo, że "ą" w dalszym ciągu jest "poprawne". Nie są też dostępne
polskie znaki z klawiatury. Kombinowanie z kb16 nie przynosi efektu.
I jeszcze jedno - uruchomienie jakiegoś dos-owego programu powoduje, że
"ą" już nie ma.

Poszperałem w necie i ludzie radzą sobie ostatecznie jakimiś rezydentami
typu PLKEYB, PLVGA itp.
Czy ktoś wie jak uzyskać poprawnie działające CP852 na ekranie i
klawiaturze pod command.com bez tych rezydentów.

Co mi te rezydenty przeszkadzają?
Ano to, że sterownik obrabiarki, który na tym ma chodzić ładuje jakieś
swoje rezydenty, które nie działają pod cmd.exe, a bezproblemowo chodzą
na command.com, ale nie "lubią" innych rezydentów.

Leo
Andrzej P. Wozniak
2012-08-27 16:24:20 UTC
Permalink
Post by Leon Mazurek (inny)
Witam
Mam problem z konsolą command.com (nie cmd.exe), jej stroną kodową i
klawiaturą.
Uruchomienie konsoli i 2-krotne wydanie polecenia "mode con: cp"
skutkuje dwoma różnymi wynikami - patrz niżej
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:\WINDOWS\SYSTEM32>mode con: cp
--------------------
Strona kodowa: 852
C:\WINDOWS\SYSTEM32>mode con: cp
--------------------
Strona kodowa: 437
Będę strzelał:

1. W ogóle nie sprawdziłeś w helpie obecnych możliwości wykonywanego
polecenia. Nie wiem, dlaczego zakładasz, że raz na zawsze stronę kodową
będzie się przełączać tylko poleceniem:
mode con cp select=xxx
lub jego krótszym odpowiednikiem chcp. Sprawdź dla porównania, od kiedy
polecenie chkdsk ma opcję /B.
Nie wiem też, dlaczego zakładasz, że Microsoft będzie łaskaw dokumentować
wszystkie wprowadzone zmiany. Sprawdź dla przykładu, czy polecenie format
ma udokumentowaną opcję /AUTOTEST.

2. W Windows dla trybu graficznego masz włączone dwa układy klawiatury
(polski-programisty i amerykański) i dziwi Cię to, że można je
przełączać również w trybie konsoli czy że to można zrobić wygodniej
niż w starszych systemach? Może sprawdź wynik wykonania i powtórzenia
polecenia:
mode con cp /status
A może wyłącz klawiaturę amerykańską i sprawdź, co się dzieje po restarcie
Windows?

3. Z niewiadomych powodów zakładasz, że command.com i cmd.exe (i ich
polecenia) muszą się zachowywać identycznie. Przecież na przykładzie
polecenia SET widać, że tak nie jest i być nie może (choćby ze względu na
długie nazwy w ścieżkach). Podobnie różnie wygląda wykonywanie plików *.BAT
i *.CMD. Jeśli Ci nie odpowiada zachowanie COMMAND.COM, możesz użyć pliku
*.CMD interpretowanego przez CMD.EXE.
--
Andrzej P. Woźniak ***@pochta.onet.pl (zamień miejscami z<->h w adresie)
Leon Mazurek (inny)
2012-08-27 19:05:01 UTC
Permalink
Post by Andrzej P. Wozniak
1. W ogóle nie sprawdziłeś w helpie obecnych możliwości wykonywanego
polecenia. Nie wiem, dlaczego zakładasz, że raz na zawsze stronę kodową
mode con cp select=xxx
lub jego krótszym odpowiednikiem chcp.
Sprawdziłem, sprawdziłem.
CHCP jak i MODE CON: CP ma podawać stan aktualnej strony, a nie ją
zmieniać.
Post by Andrzej P. Wozniak
2. W Windows dla trybu graficznego masz włączone dwa układy klawiatury
(polski-programisty i amerykański) i dziwi Cię to, że można je
przełączać również w trybie konsoli
Nie mam 2 układów klawiatur. Zostawiam tylko polski-programisty - inne
wywalam.
Post by Andrzej P. Wozniak
Może sprawdź wynik wykonania i powtórzenia
mode con cp /status
Jest taki sam jak wynik powtarzania poleceń: CHCP, samego MODE i MODE
CON CP, czyli pierwsze wywołanie podaje stan strony kodowej (852) i od
razu zmienia ją na 437. Tak ma być?
Post by Andrzej P. Wozniak
A może wyłącz klawiaturę amerykańską i sprawdź, co się dzieje po restarcie
Windows?
Nie wiem co ma się dziać. Z nią i bez niej mam taki sam efekt.
Post by Andrzej P. Wozniak
Jeśli Ci nie odpowiada zachowanie COMMAND.COM, możesz użyć pliku
*.CMD interpretowanego przez CMD.EXE.
Właśnie nie mogę ze względu na różną obsługę programów rezydentnych.

Leo
Leon Mazurek (inny)
2012-08-27 19:34:35 UTC
Permalink
Post by Leon Mazurek (inny)
Post by Andrzej P. Wozniak
Może sprawdź wynik wykonania i powtórzenia
mode con cp /status
Jest taki sam jak wynik powtarzania poleceń: CHCP, samego MODE i MODE
CON CP, czyli pierwsze wywołanie podaje stan strony kodowej (852) i od
razu zmienia ją na 437. Tak ma być?
Małe uzupełnienie.
Zaraz po uruchomieniu COMMAND.COM jest ustawiona strona 852.
Można to sprawdzić wpisując Alt+157 co wywali na ekran duże "Ł".
Wydanie jakiegokolwiek polecenia np. DIR zmienia stronę kodową na 437.
Teraz już nic nie rozumiem.

Leo
Andrzej P. Wozniak
2012-08-29 10:41:10 UTC
Permalink
Post by Leon Mazurek (inny)
Post by Leon Mazurek (inny)
Post by Andrzej P. Wozniak
Może sprawdź wynik wykonania i powtórzenia
mode con cp /status
Jest taki sam jak wynik powtarzania poleceń: CHCP, samego MODE i MODE
CON CP, czyli pierwsze wywołanie podaje stan strony kodowej (852) i od
razu zmienia ją na 437. Tak ma być?
Nie. Nie powinno. Nie mam Windows 7 32-bit pod ręką, ale sprawdziłem, że
Vista 32-bit zachowuje się normalnie, czyli bez nieoczekiwanych zmian.
Post by Leon Mazurek (inny)
Małe uzupełnienie.
Zaraz po uruchomieniu COMMAND.COM jest ustawiona strona 852.
Można to sprawdzić wpisując Alt+157 co wywali na ekran duże "Ł".
Wydanie jakiegokolwiek polecenia np. DIR zmienia stronę kodową na 437.
Teraz już nic nie rozumiem.
Moim zdaniem masz u siebie coś zmienione. Gdyby dotyczyło to tylko polecenia
mode, przypuszczałbym, że może któryś z plików wykonywalnych na ścieżce
przeszukiwania (w katalogu bieżącym lub w %PATH%) ma nazwę mode (mode.com,
mode.exe, mode.bat, mode.cmd, mode.lnk, mode.pif) i przesłania polecenie
systemowe. Jednak dir jest poleceniem wewnętrznym standardowego interpretera
poleceń, a objawy występujące dla każdego polecenia sugerują, że raczej
wywołujesz command.bat czy command.pif (choć niekoniecznie) zamiast
command.com. Jak pewnie wiesz, w pifie można ustawić różne dziwne rzeczy,
a niektóre z nich można ustawić jako domyślne zachowania w _default.pif.

Inne możliwości:
- używasz innej wirtualnej maszyny dosowej (np. Dosboxa zamiast NTVDM) lub
innego interpretera poleceń (np. 4DOS lub 4NT przemianowany na command.com);
- masz szkodnika, który się podczepił pod command.com;
- masz coś uszkodzone w profilu użytkownika (być może gałąź rejestru z
ustawieniami środowiska).

Proponowane akcje:
- Pozbyć się szkodników.
- Wyszukać wszystkie pliki command.* i _default.pif, zwłaszcza systemowe
i ukryte (jeśli trzeba, włączyć odpowiednie opcje folderów i opcje
wyszukiwania lub skorzystać z innego menedżera plików zamiast windowsowego
Eksploratora) i zmienić ich nazwy np. na Kommand.* i -default.pif.
- Skopiować command.com i mode.com z czystego komputera do katalogu
windows\system32 i do nowo założonego pustego katalogu, np. TEST.
- Założyć nowe konto użytkownika w Windows, zalogować się na to konto,
przejść do uprzednio założonego katalogu TEST, uruchomić command.com,
który jest w tym katalogu i sprawdzić, jak teraz zachowują się polecenia
dir i mode.
--
Andrzej P. Woźniak ***@pochta.onet.pl (zamień miejscami z<->h w adresie)
Leon Mazurek (inny)
2012-09-27 18:25:47 UTC
Permalink
Post by Andrzej P. Wozniak
Post by Leon Mazurek (inny)
Post by Andrzej P. Wozniak
Może sprawdź wynik wykonania i powtórzenia
mode con cp /status
Jest taki sam jak wynik powtarzania poleceń: CHCP, samego MODE i MODE
CON CP, czyli pierwsze wywołanie podaje stan strony kodowej (852) i od
razu zmienia ją na 437. Tak ma być?
Nie. Nie powinno. Nie mam Windows 7 32-bit pod ręką, ale sprawdziłem, że
Vista 32-bit zachowuje się normalnie, czyli bez nieoczekiwanych zmian.
Windows 8 32bit, też poprawnie trzyma 852.
Może ja mam jakąś trzaśniętą instalkę Win7 (wszystkie wersje Win7 na
jednym krążku).
Spróbuję to puścić na jakimś BOX-owym wydaniu i dam znać.

Leo
Andrzej P. Wozniak
2012-09-29 11:54:46 UTC
Permalink
Post by Leon Mazurek (inny)
Post by Andrzej P. Wozniak
Post by Leon Mazurek (inny)
Post by Andrzej P. Wozniak
Może sprawdź wynik wykonania i powtórzenia
mode con cp /status
Jest taki sam jak wynik powtarzania poleceń: CHCP, samego MODE i MODE
CON CP, czyli pierwsze wywołanie podaje stan strony kodowej (852) i od
razu zmienia ją na 437. Tak ma być?
Nie. Nie powinno. Nie mam Windows 7 32-bit pod ręką, ale sprawdziłem, że
Vista 32-bit zachowuje się normalnie, czyli bez nieoczekiwanych zmian.
Windows 8 32bit, też poprawnie trzyma 852.
Może ja mam jakąś trzaśniętą instalkę Win7 (wszystkie wersje Win7 na
jednym krążku).
I dopiero teraz się przyznajesz, że masz jakąś chałturniczą samoróbkę
z niekompletnie zintegrowanymi dodatkowymi zasobami językowymi zamiast
oryginalnego nośnika?
--
Andrzej P. Woźniak ***@pochta.onet.pl (zamień miejscami z<->h w adresie)
Leon Mazurek (inny)
2012-09-29 15:05:35 UTC
Permalink
Post by Andrzej P. Wozniak
Post by Leon Mazurek (inny)
Post by Andrzej P. Wozniak
Post by Leon Mazurek (inny)
Post by Andrzej P. Wozniak
Może sprawdź wynik wykonania i powtórzenia
mode con cp /status
Jest taki sam jak wynik powtarzania poleceń: CHCP, samego MODE i MODE
CON CP, czyli pierwsze wywołanie podaje stan strony kodowej (852) i od
razu zmienia ją na 437. Tak ma być?
Nie. Nie powinno. Nie mam Windows 7 32-bit pod ręką, ale sprawdziłem, że
Vista 32-bit zachowuje się normalnie, czyli bez nieoczekiwanych zmian.
Windows 8 32bit, też poprawnie trzyma 852.
Może ja mam jakąś trzaśniętą instalkę Win7 (wszystkie wersje Win7 na
jednym krążku).
I dopiero teraz się przyznajesz, że masz jakąś chałturniczą samoróbkę
z niekompletnie zintegrowanymi dodatkowymi zasobami językowymi zamiast
oryginalnego nośnika?
Spokojnie, spokojnie. Na oryginalnej płycie z BOX-a PL jest identycznie.
Zarówno w wersji 32bit Prof jak i 32bit Home
Jednym słowem dupa zbita.

Leo
Grzegorz Niemirowski
2012-09-30 20:05:23 UTC
Permalink
Post by Andrzej P. Wozniak
I dopiero teraz się przyznajesz, że masz jakąś chałturniczą samoróbkę
z niekompletnie zintegrowanymi dodatkowymi zasobami językowymi zamiast
oryginalnego nośnika?
U mnie też jest tak samo jak u Leona, a nigdy żadnych samoróbek nie robiłem.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 4 days, 22 hours, 48 minutes and 18 seconds
Andrzej P. Wozniak
2012-09-30 23:04:45 UTC
Permalink
Post by Grzegorz Niemirowski
Post by Andrzej P. Wozniak
I dopiero teraz się przyznajesz, że masz jakąś chałturniczą samoróbkę
z niekompletnie zintegrowanymi dodatkowymi zasobami językowymi zamiast
oryginalnego nośnika?
U mnie też jest tak samo jak u Leona, a nigdy żadnych samoróbek nie robiłem.
Macie oryginalny nośnik wytłoczony przez MS czy może obraz iso pobrany
z sieci, np. z MSDNAA? W tym drugim przypadku to jednak chyba samoróbka
polskiego oddziału MS…
--
Andrzej P. Woźniak ***@pochta.onet.pl (zamień miejscami z<->h w adresie)
Leon Mazurek (inny)
2012-10-01 21:33:01 UTC
Permalink
Post by Andrzej P. Wozniak
Post by Grzegorz Niemirowski
Post by Andrzej P. Wozniak
I dopiero teraz się przyznajesz, że masz jakąś chałturniczą samoróbkę
z niekompletnie zintegrowanymi dodatkowymi zasobami językowymi zamiast
oryginalnego nośnika?
U mnie też jest tak samo jak u Leona, a nigdy żadnych samoróbek nie robiłem.
Macie oryginalny nośnik wytłoczony przez MS czy może obraz iso pobrany
z sieci, np. z MSDNAA? W tym drugim przypadku to jednak chyba samoróbka
polskiego oddziału MS…
Jeśli płyta z BOX-a PL nie jest "samoróbką polskiego oddziału MS", to
miałem oryginał.

Leo
Grzegorz Niemirowski
2012-10-02 08:41:37 UTC
Permalink
Post by Andrzej P. Wozniak
Macie oryginalny nośnik wytłoczony przez MS czy może obraz iso pobrany
z sieci, np. z MSDNAA? W tym drugim przypadku to jednak chyba samoróbka
polskiego oddziału MS…
Nie słyszałem nigdy o tym, żeby polski oddział wypuszczał jakieś samoróbki.
Rozmawiajmy o faktach a nie spiskowych teoriach.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 6 days, 11 hours, 24 minutes and 1 second
Wiktor S.
2012-09-04 17:06:59 UTC
Permalink
Post by Leon Mazurek (inny)
Małe uzupełnienie.
Zaraz po uruchomieniu COMMAND.COM jest ustawiona strona 852.
Można to sprawdzić wpisując Alt+157 co wywali na ekran duże "Ł".
Wydanie jakiegokolwiek polecenia np. DIR zmienia stronę kodową na 437.
Teraz już nic nie rozumiem.
Mogę potwierdzić takie zachowanie, Windows 7 Ultimate 32-bit.
Co może być istotne, Windows jest angielski, z zainstalowanym polskim
pakietem językowym.

Wszystkie możliwe ustawienia regionalne są na "polski", i poza tym
szczególnym przypadkiem ze stroną kodową, polskie litery wszędzie działają.
--
Azarien
Andrzej P. Wozniak
2012-09-05 22:13:54 UTC
Permalink
Post by Wiktor S.
Post by Leon Mazurek (inny)
Małe uzupełnienie.
Zaraz po uruchomieniu COMMAND.COM jest ustawiona strona 852.
Można to sprawdzić wpisując Alt+157 co wywali na ekran duże "Ł".
Wydanie jakiegokolwiek polecenia np. DIR zmienia stronę kodową na 437.
Teraz już nic nie rozumiem.
Mogę potwierdzić takie zachowanie, Windows 7 Ultimate 32-bit.
Co może być istotne, Windows jest angielski, z zainstalowanym polskim
pakietem językowym.
Wszystkie możliwe ustawienia regionalne są na "polski", i poza tym
szczególnym przypadkiem ze stroną kodową, polskie litery wszędzie działają.
Moim zdaniem różnica tkwi gdzieś w gałęzi
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Nls.
Niektóre wartości są tam powprowadzane dziwacznie, więc trzeba sprawdzać
wszystkie wartości we wszystkich podkluczach.

Przykładowo:

* W kluczu HKLM\System\CurrentControlSet\Nls
jest wartość
OEMCP="852"
przy braku wartości domyślnej, ale może coś jest skopane w instalatorze
polskiego pakietu językowego i dopisuje do OEMCP zamiast zamieniać, więc
może być string (ciąg)
OEMCP="437 852"
lub multistring (wielociąg). Nie sprawdzałem, czy i co to robi.

* W kluczu HKLM\System\CurrentControlSet\Nls\Language
oprócz nieustalonej wartości domyślnej jest też wartość
"Default"="0415"

* W kluczu HKLM\System\CurrentControlSet\Nls\Locale
oprócz ustawionej wartości domyślnej
@="0409"
jest też wartość
"(Default)"="0415"
a może na odwrót:
@="0415"
"(Default)"="0409"
Nie potrafię odpowiedzieć, jak ma być poprawnie, a w internecie można
znaleźć różne warianty.

Dla porządku dodam, że takie dziwactwa są już w Windows 2000.
--
Andrzej P. Woźniak ***@pochta.onet.pl (zamień miejscami z<->h w adresie)
a***@gmail.com
2016-02-04 00:21:16 UTC
Permalink
Post by Leon Mazurek (inny)
Witam
Mam problem z konsolą command.com (nie cmd.exe), jej stroną kodową i
klawiaturą.
Uruchomienie konsoli i 2-krotne wydanie polecenia "mode con: cp"
skutkuje dwoma różnymi wynikami - patrz niżej
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:\WINDOWS\SYSTEM32>mode con: cp
--------------------
Strona kodowa: 852
C:\WINDOWS\SYSTEM32>mode con: cp
--------------------
Strona kodowa: 437
Pierwsze wywołanie podaje stronę 852 i niby jest OK bo widać polską
literę "ą", ale drugie podaje, że stroną kodową nie jest 852 tylko 437
mimo, że "ą" w dalszym ciągu jest "poprawne". Nie są też dostępne
polskie znaki z klawiatury. Kombinowanie z kb16 nie przynosi efektu.
I jeszcze jedno - uruchomienie jakiegoś dos-owego programu powoduje, że
"ą" już nie ma.
Poszperałem w necie i ludzie radzą sobie ostatecznie jakimiś rezydentami
typu PLKEYB, PLVGA itp.
Czy ktoś wie jak uzyskać poprawnie działające CP852 na ekranie i
klawiaturze pod command.com bez tych rezydentów.
Co mi te rezydenty przeszkadzają?
Ano to, że sterownik obrabiarki, który na tym ma chodzić ładuje jakieś
swoje rezydenty, które nie działają pod cmd.exe, a bezproblemowo chodzą
na command.com, ale nie "lubią" innych rezydentów.
Leo
Witam
Zna ktoś w końcu rozwiązanie? Na wszystkich Win7 na jakich sprawdzałem jest ten sam problem.
Kontynuuj czytanie narkive:
Loading...