W2K shell
2) В ярлычке вроде можно указать файлы, заменяющие указанные в п.1 для данной проги.
cmd.exe
Русский и английский переключаются по Alt+Shift, но внутри любой запущенной проги не переключается вообще.
Если запущенная прога - приложение под MS-DOS, то переключаться языки должны так же:
ommand.com
С переключением языков вообще непонятно, то они переключаются в лучших традициях Микрософта (LShift+LCtrl в одну сторону и RShift+RCtrl в другую то вообще не переключаются.
Вообще, с поддержкой MS-DOS программ в Windows 2000/NT/XP дела обстоят далеко не лучшим образом. Если запущенная программа - Win32 Console Application, то никаких проблем с переключением никогда нет, переключается так, как в системе прописал.
Ещё хуже дело обстоит с собственно оболочкой:
при вызове из батника не работают ни SET, ни PATH.
Насколько помню, ни в command.com, ни в cmd.exe не существует аналога sh'ловского export. А он естественно требуется, чтобы переменные установленные в батнике у тебя оказались в вызывающей оболочке. Попробуй такой .bat файл, он работает?
@echo off
set TEST=Hello
echo Variable: %TEST%
нормальные люди юзают bash
Дело в том, что я перенёс старые наработки,
а там довольно часто изменяются переменные среды.
Переделывать всё подряд не хотелось бы.
Сейчас достиг русского языка в последовательности:
а) пуск интерпретатора;
б) установка переменных;
в) запуск русификатора клавиатуры.
Возникла проблема с "SET" --- не устанавливает, не выводит, не меняет.
Где же грабли?
Нужно как-то сделать переключение раскладки.
Старый приём c keyb не спас.
Где-то грабли.
---
...Я работаю...
потому что не вызывается командный процессор,
поэтому все вызываемые SET и PATH должны менять переменные.
И так оно в ДОСе (и в 95/98-ых) и есть.
Только почему-то 2000-ая имеет на это собственное мнение.
Чёрт бы её побрал!
---
...Я работаю...
если из батника --- нет.
---
...Я работаю...
Microsoft Windows [Version 5.2.3790]
Покажи батник. Странно это все как-то...
Вопрос не только в работе интерпретатора, но и в раскладке.
---
...Я работаю...
1. Run -> cmd
2. Alt-Shift фыв Alt-Shift asdf Esc
3.
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
C:\>set t=asdf
C:\>echo %T%
asdf
C:\>
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
4. Вызываю досову прогу.
Alt-Shift asdf Alt-Shift asdf
Выхожу.
5. Alt-Shift фыв Alt-Shift asdf Esc
6. Руссификатор.
LShift-RShift фыва LShift-RShift asdf
7.
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
C:\>set t=qwer
C:\>echo %T%
qwer
C:\>echo set t=zxcv>tst.bat
C:\>type tst.bat
set t=zxcv
C:\>tst
C:\>set t=zxcv
C:\>echo %T%
qwer
C:\>
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
?
Запускаю чистый CMD.
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
C:\>set t=asdf
C:\>tst
C:\>set t=zxcv
C:\>echo %T%
zxcv
C:\>
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
?
---
...Я работаю...
А дальше комментирую по шагам.
C:\>set t=qwerПока все нормально, ничего необычного.
C:\>echo %T%
qwer
C:\>echo set t=zxcv>tst.bat
C:\>type tst.bat
set t=zxcv
C:\>tstПри запуске .bat файла, он запускается в новой копии cmd.exe/command.com. Внутри этого бата наверняка переменная установлена. Как только он заканчивает выполняться - она исчезает вместе с интерпретатором. Чтобы выполнить .bat файл в этом же экземпляре интерпретатора, есть команда call.
C:\>set t=zxcv
C:\>echo %T%С учетом того, что я написал выше, все совершенно правильно.
qwer
C:\>
Как надо:
E:\0>type a.bat
set t=asdf
E:\0>set t=qwe
E:\0>echo %t%
qwe
E:\0>a.bat
E:\0>set t=asdf
E:\0>echo %t%
asdf
E:\0>call a.bat
E:\0>set t=asdf
E:\0>echo %t%
asdf
E:\0>
Кстати, это все не менялось начиная примерно с MS-DOS 3.30
Увеличил объём среды до 8 Кб.
Такое впечатление, будто завелось.
Буду смотреть дальше.
При запуске батника копия интерпретатора не грузится.
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
C:\>echo mem>tst.bat
C:\>tst
C:\>mem
655360 байт - всего обычной памяти
655360 байт - доступно для MS-DOS
633248 максимальный размер исполняемой программы
1048576 байт - всего непрерывной дополнительной памяти
0 байт - доступно непрерывной дополнительной памяти
941056 байт - доступной памяти XMS
резидентная часть MS-DOS загружена в сегмент HMA
C:\>mem
655360 байт - всего обычной памяти
655360 байт - доступно для MS-DOS
633248 максимальный размер исполняемой программы
1048576 байт - всего непрерывной дополнительной памяти
0 байт - доступно непрерывной дополнительной памяти
941056 байт - доступной памяти XMS
резидентная часть MS-DOS загружена в сегмент HMA
C:\>
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
Видно, что числа одинаковы.
Комманда "call" служит для того, чтобы можно было вернуться, иначе происходит простой переход.
"Нелокальный."
---
...Я работаю...
655360 байт - всего обычной памяти
655360 байт - доступно для MS-DOS
633248 максимальный размер исполняемой программы
Видно, что числа одинаковы.
Скажи пожалуйста, какой все же операционной системой ты пользуешься? MS-DOS или Windows 2000? Если последней, то в ней эти цифры, если у тебя достаточно свободной оперативной памяти всегда будут такими, какие ты укажешь здесь:
Если ты хочешь узнать, сколько памяти действительно свободно, то пользуйся Win32 программами, а не MS-DOS программами.
Кроме того, при запуске второго экземпляра одной и той же Win32 программы система достаточно хитро поступает с загрузкой памяти, и память под code segment как правило повторно не выделяется. В общем, сложно все
Но сейчас возникли трудности, непонятно с чем связанные в симуляции ДОС-а 2000-ой.
Вот тебе контрпример, кстати.
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
Microsoft Windows 2000 [Версия 5.00.2195]
(С) Корпорация Майкрософт, 1985-2000.
C:\>echo set t=qwer>tst.bat
C:\>echo echo %T%>>tst.bat
C:\>type tst.bat
set t=qwer
echo %T%
C:\>set t=asdf
C:\>tst
C:\>set t=qwer
C:\>echo qwer
qwer
C:\>echo %T%
qwer
C:\>
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
Ну не запускается вторая копия, не запускается.
---
...Я работаю антинаучным аферистом...
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
C:\>cmd /?
Запуск новой копии интерпретатора команд Windows 2000.
CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
[[/S] [/C | /K] строка]
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
.....................
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
/E:ON Разрешение расширений команд (см. ниже)
/E:OFF Запрет расширений команд (см. ниже)
/F:ON Разрешение символов завершения имен файлов и папок (см. ниже)
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
Какой урод поменял смысл ключа?
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
0040E0 COMMAND 000B50 Программа
004C40 MSDOS 000070 - Свободно -
004CC0 COMMAND 002730 Окружение
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
Час от часу не легче.
---
...Я работаю...
От чего это зависит, я так и не понял.
Бред какой-то.
---
...Я работаю...
На чистой досовой машине доказано, что command второй раз, при вызове пакетного задания, не запускается.
Как проверить, пускается ли он второй раз в 2000-й?
Есть ли средства пройти по цепочке PSP до корневого command и его переменных окружения?
Либо, как менять раскладку?
---
"Верь сводке погоды, но доверяй --- интуиции.
Будь особенно бдителен, когда всё хорошо и нет поводов для тревоги."
Найдено решение --- запустить копию cmd.
1. Run -> cmd
2. kb16 ru
3. cmd
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
C:\>copy con tst.bat
set test=test
^Z
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
Run -> cmd
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
Microsoft Windows 2000 [Версия 5.00.2195]
(С) Корпорация Майкрософт, 1985-2000.
C:\>tst
C:\>set test=test
C:\>echo %test%
test
C:\>set test=
C:\>kb16 ru
C:\>tst
C:\>set test=test
C:\>echo %test%
%test%
C:\>
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
Непорядок.
Run -> cmd
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
Microsoft Windows 2000 [Версия 5.00.2195]
(С) Корпорация Майкрософт, 1985-2000.
C:\>kb16 ru
C:\>cmd
Microsoft Windows 2000 [Версия 5.00.2195]
(С) Корпорация Майкрософт, 1985-2000.
C:\>tst
C:\>set test=test
C:\>echo %test%
test
C:\>
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
Порядок.
Единственное --- пропадает русский.
Лечится, как обычно, дополнительным вызовом kb16 в батнике prog.bat вида
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
kb16 ru
prog.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
Изврат, но пока работает.
Кто узнает лучшее решение, скажите мне.
Решение с regedit-ом не проходит из-за ограничений доступа.
Взломом я пока не занимался.
---
"Возникай содружество
Ворона с бойцом, ---
Укрепляйся мужество
Сталью и свинцом."
Оставить комментарий
Ivan8209
Что-то бред какой-то./^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
C:\WINNT\SYSTEM32>ver
Microsoft Windows 2000 [Версия 5.00.2195]
C:\WINNT\SYSTEM32>dir command.com
............
08.08.2000 08:08 51 974 command.com
C:\WINNT\SYSTEM32>dir cmd.exe
..........
08.08.2000 08:08 242 960 CMD.EXE
/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\/^\
Начинаем работать.
cmd.exe
Русский и английский переключаются по Alt+Shift, но внутри любой запущенной проги не переключается вообще.
command.com
С переключением языков вообще непонятно, то они переключаются в лучших традициях Микрософта (LShift+LCtrl в одну сторону и RShift+RCtrl в другую то вообще не переключаются.
Ещё хуже дело обстоит с собственно оболочкой:
при вызове из батника не работают ни SET, ни PATH.
"Внимание! Вопрос!" (Ворошилов)
Где грабли?
Что делать?
Хочется и русского языка и приличной работы интерпретатора.
---
...Я работаю...