最近我了解到,我可以控制我的运行与程序的CMD窗口的大小mode x,y
。 不过,我就像最近发现,这种设置缓冲区大小,窗口将调整,以匹配或最大程度的发挥,在屏幕尺寸。
我想用mode 100,50
的窗口大小,但我也想保持一个arger缓冲-至少我想发展mode 100,9999
。
有没有办法做到这一点?
最近我了解到,我可以控制我的运行与程序的CMD窗口的大小mode x,y
。 不过,我就像最近发现,这种设置缓冲区大小,窗口将调整,以匹配或最大程度的发挥,在屏幕尺寸。
我想用mode 100,50
的窗口大小,但我也想保持一个arger缓冲-至少我想发展mode 100,9999
。
有没有办法做到这一点?
我不觉得有什么,让缓冲和窗口大小的独立控制本地批处理命令。 .NET可以同时控制,但我不认为VBScript或JScript可以访问该功能。 但是PowerShell中可以:-)见我如何展开Windows PowerShell控制台的宽度是多少?
值得庆幸的是,新的设置是在CMD窗口中保存的PowerShell退出时。
重要的是,窗口大小总是小于或等于缓冲区大小。 为简单起见,我第一使用模式来设置两个窗口,缓冲剂配制至所需窗口大小,然后我使用的powershell设置缓冲区的大小。
下面是一个简单conSize.bat混合分批/的powershell脚本,需要大小作为参数:
@echo off
:conSize winWidth winHeight bufWidth bufHeight
mode con: cols=%1 lines=%2
powershell -command "&{$H=get-host;$W=$H.ui.rawui;$B=$W.buffersize;$B.width=%3;$B.height=%4;$W.buffersize=$B;}"
为了得到你想要的大小,你会简单地使用
call conSize 100 50 100 9999
这里的另一个变种:
/*
@echo off & mode 100,50
set "cscfile="
set Pathfile="%WinDir%\Microsoft.NET\Framework\csc.exe"
for /f "delims=" %%a in ('dir /b /a-d /s %PathFile%') do set "cscfile=%%a"
if defined cscfile (
%cscfile% /nologo /out:"%~0.exe" %0
) else exit /b
"%~0.exe"
del "%~0.exe"
cmd /k
*/
using System;
class Program
{
static void Main()
{
Console.SetBufferSize(100, 9999);
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Current Logged UserName: " + Environment.UserName);
Console.ResetColor();
Console.WriteLine("[Enter] to continue");
Console.ReadLine();
}
}
有可用的“ConSetBuffer”的可执行文件,明确这样做,我发现它可靠地工作。 它与相关控制台工具可以在“conutils.zip”链接此页面上 。
我已经写了一个小的应用程序适用于Windows,允许“最大化”窗口和缓冲区。 它可以很容易地扩展到允许自定义值传递参数。
我已经找到一种方法来调整缓冲区大小不影响窗口的大小。 它的工作原理得益于缺陷批次是如何工作的,但它能够完成任务。
mode 648 78 >nul 2>nul
它是如何工作的? 有在此命令了语法错误,它应该是“模式648,78”。 由于批量如何工作的,缓冲区的大小将首先被调整到648,然后在窗口大小调整会来,但它永远不会结束,因为语法错误的。 瞧,缓存大小调整和窗口大小保持不变。 这将产生一个丑陋的错误,以便摆脱它只是添加“> NUL 2> NUL”,就大功告成了。