RE: Потому что MS во многих случаях ценит "обратную совместимость", и в этом случае я подозреваю, что это неуместное убеждение, что это как-то нервирует людей, если у них нет стандартного окна шириной 80.
Обратная совместимость работает довольно ужасно, хотя. Я не думаю, что Microsoft достаточно тщательно отреагировала на их реализацию, и я верю, что Microsoft - это плакат для того, чтобы новые версии не работали на старых версиях. Многое не работает должным образом под COMMAND.COM, что значительно саботирует полезность, которой он обладает, не говоря уже о том, что вам нужно вводить DOSONLY, чтобы некоторые программы работали должным образом, плюс Microsoft удаляла полезные команды. Честно говоря, я не могу себе представить, что Microsoft высоко ценит «обратную совместимость».
Кроме того, я думаю, что настоящая причина, по которой длина строки составляет стандартно 80 столбцов, заключается в том, что большинство программ командной строки и т. Д. Работают в предположении, что пользователь ограничен запросом в 80 столбцов, что означает увеличение ширина может вызвать ошибки форматирования или, что еще хуже, может привести к поломке программ.
Как уже упоминал jmucchiello, MODE отлично подойдет для изменения размера окна, если вы захотите.
Configures system devices.
Serial port: MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s]
[to=on|off] [xon=on|off] [odsr=on|off]
[octs=on|off] [dtr=on|off|hs]
[rts=on|off|hs|tg] [idsr=on|off]
Device Status: MODE [device] [/STATUS]
Redirect printing: MODE LPTn[:]=COMm[:]
Select code page: MODE CON[:] CP SELECT=yyy
Code page status: MODE CON[:] CP [/STATUS]
Display mode: MODE CON[:] [COLS=c] [LINES=n]
Typematic rate: MODE CON[:] [RATE=r DELAY=d]
Если вы включили DOSONLY на вашем CONFIG.NT, однако, когда вы откроете COMMAND.COM, он унаследует правильное разрешение строки в стиле DOS от cmd.exe, но вы не можете вызвать MODE изнутри COMMAND.COM. Если вы хотите изменить размер внутри COMMAND.COM, вам придется использовать 16-битные инструкции по сборке, например:
80x50 Разрешение линии (Без кадрового буфера, без SVGA, поддерживается практически повсеместно.)
DEBUG
A100
MOV AX,1112
INT 10
INT 20
G
Q
132x60 Разрешение линии (Нет кадрового буфера, требуется SVGA. Не работает на картах ATI gfx, обычно работает на картах nVidia gfx, afaict всегда работает на картах Intel интегрированных gfx.)
DEBUG
A100
MOV AX,4F02
MOV BX,010C
INT 10
INT 20
G
Q
Если вы введете это в свой COMMAND.COM, он даст вам указанное разрешение. (Предупреждение: если ваш монитор достаточно древний, чтобы не поддерживать режим, вы можете уничтожить его. Примечание: если вы можете запустить Windows, с вашим монитором все должно быть в порядке. Отказ от ответственности: акцент должен быть, и вы были предупреждены , так что это не моя проблема, если ваш монитор жарит. ;-) Однако, если вы используете это без DOSONLY, COMMAND.COM изменит размер до своего прежнего размера, как только приложение (в этом случае, если вы не записали его в файл и выполнил, DEBUG) выходит.
В качестве альтернативы вы можете использовать MODE.COM во FreeDOS, который будет правильно работать в COMMAND.COM, установленном в DOSONLY. Вы можете вытащить его с образа диска на официальном сайте (freedos.org) или получить по адресу http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/mode/2005/.
New FreeDOS MODE by Eric Auer 2003-2005. License: GPL. (version 12may2005)
MODE [device] [/STA[TUS]] (show status of one or all devices)
MODE LPTn[:] cols[,[lines][,retry]] (cols or cpi, 6/8 lpi, retry p or n)
MODE LPTn[:] [COLS=...] [LINES=...] [RETRY=...] (retry: p infinite / n none)
MODE LPTn[:]=[COMn[:]|NUL] (redirect printer data to serial port or NUL)
MODE COMn[:] baud,parity,data,stop,retry (empty values allowed)
MODE COMn[:] [BAUD[HARD]=...] [PARITY=...] [DATA=...] [STOP=...] [RETRY=...]
Baud can be abbreviated to unique prefix, parity can be o/e/n/s/m, the
latter 2 mean space/mark, data can be 5..8, stop 1..2. Retry is IGNORED!
PLANNED: Retry b/e/r -> busy/error/ready if busy, p/n infinite/no retry.
MODE CON[:] [CP|CODEPAGE] [/STA[TUS]] (FreeDOS DISPLAY must be loaded)
MODE CON[:] [CP|CODEPAGE] REF[RESH] (needs DISPLAY)
MODE CON[:] [CP|CODEPAGE] SEL[ECT]=number (needs DISPLAY)
MODE CON[:] [CP|CODEPAGE] PREP[ARE]=((codepage) filename) (needs DISPLAY)
Use PREP=((,cp2,cp3,,cp5) ...) to prep codepages in other buffers.
MODE [40|80|BW40|BW80|CO40|CO80|MONO][,rows] (rows can be 25, 28, 43 or 50)
Use 8, 14 or 16 as 'rows' value if you only want to change the font.
MODE [CO40|CO80|...],[R|L][,T] (shift CGA left/right, T is interactive mode)
MODE CON[:] [NUMLOCK|CAPSLOCK|SCROLLLOCK|SWITCHAR]=value
Value can be: + or - for the locks or a character for switchar.
MODE CON[:] [COLS=...] [LINES=...] (possible values depend on your hardware)
MODE CON[:] [RATE=...] [DELAY=...] (default rate 20, default delay 1)
Rate can be 1..32 for 2..30 char/sec, delay can be 1..4 for 1/4..4/4 sec.
По тем же причинам, что и с предоставленным мною кодом ASM, если вы не выполните его в COMMAND.COM с добавлением DOSONLY в ваш файл CONFIG.NT, окно сразу же восстановится до своего прежнего размера после выхода из MODE.COM.
Наконец, как уже говорили другие, можно также изменить эти настройки, просто щелкнув правой кнопкой мыши на строке заголовка командной строки и изменив Свойства -> Макет. Точно так же вы можете установить разрешение для любых ярлыков CMD.EXE и пакетных файлов (щелкните правой кнопкой мыши ярлык -> Свойства -> Макет). Это работает только для CMD.EXE, но не для COMMAND.COM.