Windows批处理中call命令如何实现start /max的窗口最大化效果?
解决批处理中最大化终端运行程序且不自动关闭的问题
方案1:改进start /max命令,让窗口执行后停留
你之前用start /max时窗口自动关闭,是因为默认执行完程序后,启动的cmd窗口就会退出。可以给start搭配cmd /k参数,让窗口在执行完程序后保持打开:
start /max cmd /k "path\to\your\executable.exe"
/max:确保启动的cmd窗口直接最大化cmd /k:让cmd执行指定命令后保持窗口打开,方便你查看程序输出或执行结果
如果希望程序执行完后,用户按任意键再关闭窗口,可以换成cmd /c结合pause:
start /max cmd /c "path\to\your\executable.exe & pause"
cmd /c:原本执行命令后会关闭窗口,但加上& pause后,会在程序结束后暂停,等待用户输入才关闭
方案2:让当前批处理窗口全屏后用call执行程序
call命令本身是在当前窗口执行程序,它没有自带的窗口最大化参数。要实现当前窗口全屏,我们可以借助VBScript来控制窗口状态,然后再用call执行程序:
@echo off :: 生成临时VBS脚本,让当前CMD窗口全屏 echo Set objShell = CreateObject("shell.application") > %temp%\maximize.vbs echo objShell.Windows.Item(0).FullScreen = True >> %temp%\maximize.vbs :: 执行VBS脚本实现全屏 cscript //nologo %temp%\maximize.vbs :: 删除临时脚本 del %temp%\maximize.vbs :: 用call执行你的可执行文件 call path\to\your\executable.exe :: 可选:如果程序执行完后想保持窗口打开,添加pause pause
这个方法会把当前批处理所在的cmd窗口直接设为全屏,然后在这个窗口里执行程序,执行完后窗口不会自动关闭(除非你没加pause且批处理运行结束)。
方案3:灵活调整窗口大小(替代mode命令)
如果你觉得固定数值的mode cols=200 lines=300不够适配不同屏幕,可以用动态获取屏幕分辨率的方式调整窗口尺寸(虽不是真正全屏,但能最大化利用屏幕空间):
@echo off :: 获取屏幕宽度和高度 for /f "tokens=2 delims=:" %%a in ('wmic desktopmonitor get screenwidth /value ^| find "ScreenWidth"') do set "width=%%a" for /f "tokens=2 delims=:" %%a in ('wmic desktopmonitor get screenheight /value ^| find "ScreenHeight"') do set "height=%%a" :: 换算窗口的列数和行数(可根据字体大小微调比例) set /a cols=%width%/8 set /a lines=%height%/16 mode con cols=%cols% lines=%lines% :: 执行程序 call path\to\your\executable.exe pause
内容的提问来源于stack exchange,提问作者goodvibration




