How to change Screen buffer size in Windows Command Prompt from batch script

后端 未结 14 1426
清歌不尽
清歌不尽 2020-12-02 09:59

I know you can do right click properties ->layout and there change it manually.

But how would you go about changing it from a Windows batch script?

I know yo

相关标签:
14条回答
  • 2020-12-02 10:32

    There is no "DOS command prompt". DOS fully died with Windows ME (7/11/2006). It's simply called the Command Prompt on Windows NT (which is NT, 2K, XP, Vista, 7).

    There is no way to alter the screen buffer through built-in cmd.exe commands. It can be altered through Console API Functions, so you might be able to create a utility to modify it. I've never tried this myself.

    Another suggestion would be to redirect output to both a file and to the screen so that you have a "hard copy" of it. Windows does not have a TEE command like Unix, but someone has remedied that.

    0 讨论(0)
  • 2020-12-02 10:33

    I'm expanding upon a comment that I posted here as most people won't notice the comment.

    https://lifeboat.com/programs/console.exe is a compiled version of the Visual Basic program described at https://stackoverflow.com/a/4694566/1752929. My version simply sets the buffer height to 32766 which is the maximum buffer height available. It does not adjust anything else. If there is a lot of demand, I could create a more flexible program but generally you can just set other variables in your shortcut layout tab.

    Following is the target I use in my shortcut where I wish to start in the f directory. (I have to set the directory this way as Windows won't let you set it any other way if you wish to run the command prompt as administrator.)

    C:\Windows\System32\cmd.exe /k "console & cd /d c:\f"
    
    0 讨论(0)
  • 2020-12-02 10:34

    I was just searching for an answer to this exact question, come to find out the command itself adjusts the buffer!

    mode con:cols=140 lines=70
    

    The lines=70 part actually adjusts the Height in the 'Screen Buffer Size' setting, NOT the Height in the 'Window Size' setting.

    Easily proven by running the command with a setting for 'lines=2500' (or whatever buffer you want) and then check the 'Properties' of the window, you'll see that indeed the buffer is now set to 2500.

    My batch script ends up looking like this:

    @echo off
    cmd "mode con:cols=140 lines=2500"
    
    0 讨论(0)
  • 2020-12-02 10:34

    You can change the buffer size of cmd by clicking the icon at top left corner -->properties --> layout --> screen buffer size.
    you can even change it with cmd command

    mode con:cols=100 lines=60
    Upto lines = 58 the height of the cmd window changes ..
    After lines value of 58 the buffer size of the cmd changes...

    0 讨论(0)
  • 2020-12-02 10:36

    If anyone is still wondering, on the newer versions of windows you can use powershell:

    powershell.exe -command "& {$pshost = Get-Host;$pswindow = $pshost.UI.RawUI;$newsize = $pswindow.BufferSize;$newsize.height = 150;$pswindow.buffersize = $newsize;}"
    
    0 讨论(0)
  • 2020-12-02 10:36

    I know the question is 9 years old, but maybe for someone it will be interested furthermore. According to the question, to change the buffer size only, it can be used Powershell. The shortest command with Powershell is:

    powershell -command "&{(get-host).ui.rawui.buffersize=@{width=155;height=999};}"
    

    Replace the values of width and height with your wanted values.

    But supposedly the reason of your question is to modify the size of command line window without reducing of the buffer size. For that you can use the following command:

    start /b powershell -command "&{$w=(get-host).ui.rawui;$w.buffersize=@{width=177;height=999};$w.windowsize=@{width=155;height=55};}"
    

    There you can modify the size of buffer and window independly. To avoid an error message, consider that the values of buffersize must be bigger or equal to the values of windowsize.

    Additional implemented is the start /b command. The Powershell command sometimes takes a few seconds to execute. With this additional command, Powershell runs parallel and does not significantly delay the processing of the following commands.

    0 讨论(0)
提交回复
热议问题