web-dev-qa-db-ja.com

Windowsのcmd.exeの幅が80文字に制限されているのはなぜですか?

UNIXで端末をストレッチするのが大好きです。 Windows Lameコマンドラインの背後にある歴史や理由は何ですか?

101
minty

そうではありません。タイトルバーを右クリックしてプロパティを選択し、[レイアウト]タブで画面バッファーサイズ(行幅とスクロールバック)とウィンドウサイズ(ビューポートサイズ)を変更できます。ショートカットからcmdを起動した場合、これらの設定を将来のセッションのために保存できます。

146
erickson

マウスを使用しない場合は、cmdウィンドウ内で次のように入力することもできます。

mode <cols>,<lines>
mode 80,25
mode 120,50
etc.
107
jmucchiello

制限されていません。

  1. Cmd.exeを実行する
  2. 画面の左上にあるアイコンをクリックします。
  3. プロパティを選択
  4. [レイアウト]タブを選択します。
  5. バッファとウィンドウの幅を好きなように設定します。
  6. OKをクリック
  7. 将来のためにプロパティを保存...を選択します.
  8. OKをクリックします。

Console をチェックアウトすることもできます。これは、タブ付き環境で複数のシェルを実行できるオープンソースのアプリです。シェルのアルファ透明度を設定することもできます。

43
Tim Stewart

RE:MSは多くの点で「下位互換性」を重視しているため、この場合、標準の80ワイドウィンドウを持っていないと、人々が何らかの形で不安を感じると見当違いだと思います。

ただし、後方互換性はかなりひどく機能します。 Microsoftがその実装についてかなり徹底的であったとは思いませんし、Microsoftが新しいバージョンが古いバージョンで動作しないことを確認するための代表者だと思います。 COMMAND.COMでは、多くの機能が適切に機能しません。これは、いくつかのプログラムを正常に実行するためにDOSONLYを入力する必要があることは言うまでもなく、所有する有用性をかなり妨害します。正直なところ、Microsoftが「下位互換性」を高く評価しているとは想像できません。

さらに、行の長さが80カラムの標準である本当の理由は、ほとんどのコマンドラインプログラムなどが、ユーザーが80カラムプロンプトで制限されているという前提の下で動作するためです。書式設定エラーまたはさらに悪いことに、プログラムを完全に破壊する可能性があります。

Jmucchielloが述べたように、MODEはウィンドウのサイズを変更するのに適しています。

システムデバイスを設定します。
 
シリアルポート: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] 
 
デバイスステータス:MODE [デバイス] [/STATUS]

リダイレクト印刷:MODE LPTn [: ] = COMm [:] 
 
コードページの選択:MODE CON [:] CP SELECT = yyy 
 
コードページのステータス:MODE CON [:] CP [ /STATUS]

表示モード:MODE CON [:] [COLS = c] [LINES = n] 
 
 Typematicレート:MODE CON [:] [ RATE = r DELAY = d]

CONFIG.NTでDOSONLYを有効にしている場合、COMMAND.COMを開くと、cmd.exeから適切なDOSスタイルの行解決が継承されますが、COMMAND.COM内からMODEを呼び出すことはできません。 COMMAND.COM内でサイズを変更する場合は、次のような16ビットのアセンブリ命令を使用する必要があります。

80x50ライン解像度 (フレームバッファなし、SVGAなし、実質的に普遍的にサポートされています。)

DEBUG 
 A100 
 MOV AX、1112 
 INT 10 
 INT 20 
 
 G 
 Q

132x60ライン解像度 (フレームバッファはありません。SVGAが必要です。ATIgfxカードでは動作しません。通常は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)が終了します。

あるいは、DOSに設定されたCOMMAND.COMの下で適切に実行されるFreeDOSのMODE.COMを使用することもできます。公式Webサイト(freedos.org)のディスクイメージから取得するか、または http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/で取得できます。 mode/2005 /

Eric Auer 2003-2005による新しいFreeDOSモード。ライセンス:GPL。 (バージョン12may2005)
 MODE [デバイス] [/ STA [TUS]](1つまたはすべてのデバイスのステータスを表示)
 MODE LPTn [:] cols [、[lines] [、retry]] (colsまたはcpi、6/8 lpi、pまたはnを再試行)
 MODE LPTn [:] [COLS = ...] [LINES = ...] [RETRY = ...](再試行:p無限/ nなし)
 MODE LPTn [:] = [COMn [:] | NUL](プリンターデータをシリアルポートまたはNULにリダイレクト)
 MODE COMn [:] baud、parity、data、 stop、retry(空の値を許可)
 MODE COMn [:] [BAUD [HARD] = ...] [PARITY = ...] [DATA = ...] [STOP = ...] [ RETRY = ...] 
ボーは一意のプレフィックスに短縮でき、パリティはo/e/n/s/m、
後の2はスペース/マーク、データは5になります。 .8、停止1..2。再試行は無視されます。
計画済み:再試行b/e/r->ビジー/エラー/ビジーの場合は準備完了、p/n無限/再試行なし。
 MODE CON [:] [CP | CODEPAGE] [/ STA [TUS]](FreeDOS DISPLAYをロードする必要があります)
 MODE CON [:] [CP | CODEPAGE] REF [RESH](DISPLAYが必要)
 MODE CON [:] [CP | CODEPAGE] SEL [ECT] = number(DISPLAYが必要)
 MODE CON [:] [CP | CODEPAGE] PREP [ARE] =((codepage)filename)(DISPLAYが必要)
 PREP =を使用((、cp2、cp3、、cp5)...)他のバッファにコードページを準備します。
 MODE [40 | 80 | BW40 | BW80 | CO40 | CO80 | MONO] [、rows](行は25、28、43、または50)
フォントを変更するだけの場合は、8、14、または16を「行」値として使用します。
 MODE [CO40 | CO80 | ...]、[ R | L] [、T](CGAを左/右にシフト、Tは対話型モード)
 MODE CON [:] [NUMLOCK | CAPSLOCK | SCROLLLOCK | SWITCHAR] = value 
 +または-ロックまたはswitcharの文字。
 MODE CON [:] [COLS = ...] [LINES = ...](可能な値はハードウェアに依存)
 MODE CON [:] [R ATE = ...] [DELAY = ...](デフォルトのレート20、デフォルトの遅延1)
レートは2..30文字/秒で1..32、遅延は1..4にできます1/4..4/4秒.

私が提供したASMコードと同じ理由で、CONFIG.NTファイルにDOSONLYを追加してCOMMAND.COMで実行しない限り、MODE.COMが終了するとウィンドウはすぐに以前のサイズに戻ります。

最後に、他の人が述べたように、コマンドプロンプトのタイトルバーを右クリックし、[プロパティ]-> [レイアウト]を変更するだけで、これらの設定を変更することもできます。同様に、CMD.EXEおよびバッチファイルへのショートカットの解像度を設定できます(ショートカット->プロパティ->レイアウトを右クリックします)。これはCMD.EXEでのみ機能しますが、COMMAND.COMでは機能しません。

17

私がいつも使用するウィンドウサイズを修正する簡単なコマンド:

wmic

Windows Management Instrumentationコマンドラインを開き、サイズ制限を削除します。それからちょうどそれを閉じます Ctrl+C

13
Mijacr

私はその背後にある歴史を知りませんが、PuTTYの著者からのこのウィッシュリスト項目は、ラメではないあらゆるタイプのcmd.exe置換に伴う技術的なハードルを説明する興味深い投稿です:

http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/wishlist/win-command-Prompt.html

代替品を探していることは言及していませんが、もしそうなら、 Console 2 やJP SoftwareのTake Commandなどのようなcmd.exeの代替品もチェックしてください。 PuTTY-Cygを使用して、PuTTYをcygwinシェルとして使用できるようになりました。

6
Jay

他の答えが示すように幅は制限されていませんが、マウスでheightをドラッグしてサイズ変更できるのは奇妙ですが、widthではできません。

デフォルトの80文字の幅は、端末の幅が80文字を超えないことを前提とする古いプログラムとの互換性に関連すると思います。しかし、これが10年ほどの現実的な理由だとは思いません。

6
Greg Hewgill

他の人が指摘したように、それは80文字幅に制限されていませんが、デフォルトで80文字になっている理由については、CRTディスプレイが80文字幅だったDOS時代から残っていると思います。

参照

4
Patrick Cuff

Console2 などの別のターミナルアプリケーションを使用することもできます。これにより、必要なすべてのウィンドウのサイズを変更することができます(透明度、好きなフォントを使用できるなど) )。それは素晴らしいアプリケーションです。私はそれに切り替えて、今はcmd.exe私が絶対にしなければならないとき。

2
Sasha Chedygov

MSは多くの点で「下位互換性」を重視しているため、この場合、標準の80ワイドウィンドウがないと、人々を何らかの形で不安にさせるという見当違いの考えだと思います。

もちろん、それがほぼ普遍的であるときに80文字の固定幅にプログラムされていた可能性があり、追加のプロパティ設定はちょっとしたハックでした。

1
Draemon

それIS制限されています。チェックしてください。(バッファではなくウィンドウサイズを意味します)

設定できる最大幅は制限されていますが、画面の解像度によって異なります。解像度が1024 x 768に設定されている場合、コマンドプロンプト幅で128にしか到達できないことがわかります。 128/1024 = .125

その比率は全面的に一貫していることがわかります。 2000 x 768(3台のモニターのうち2台)で実行されているRDPセッションがあり、最大幅は250です。

今、実際にはあなたのactaulモニターサイズより少し大きいことが判明しましたが、私は3つのモニターがすべて個別のデスクトップを実行しています。 (つまり、3 1024x768の解像度)と何かをしたい場合SO SIMPLEコマンドを2つ以上のモニターにまたがって指示するようにシンプルに、私はできません。非常に長いパス(diruse.exe/etc。)...

-c

1
Chris King

上下にスクロールするだけでなく、左から右にスクロールするため、システムで最初に行うことは、幅を180に定義して保存することです。一般的には、スタックトレースの大部分をラップする必要はありませんが、大量のスペースを必要とするほどではありません。

その間、垂直方向のサイズ(スクロールバッファー)を9にすべて設定します。あなたはいつかやったことがうれしいでしょう。

0
Bill K