首页 > 解决方案 > 使用模式命令调整大小命令提示符清除整个屏幕

问题描述

因此,我尝试编写代码以生成随机字符,并且我想让屏幕始终保持相同的大小,但是当我尝试使用模式命令时,它会清除所有文本,或者您可以将其称为整个屏幕这是代码:

:startprg
mode con: cols=120 lines=24
setlocal EnableDelayedExpansion

set char=abcdeijklmnstuvwxyzABCDETUVYZ23456789^^%%_`^^%%_`^^%%_`^^%%_`^^%%_`☺☻♥♦♣♠◘•○☺☻♥♦♣♠◘♂♀q7•-6○Z♂n¡*     /*-+@#$*()_=-=+       
set count=0
set hla=0

:Number
set hla=120

set /a length=-1 + !hla!

:Loop
set /a count+=1
set /a rand=%Random%%%61
set buffer=!buffer!!char:~%rand%,1!
if !count! leq !length! goto Loop

title ^!buffer!
echo ^!buffer!
set /a length+=1

endlocal
goto startprg

请帮助我,我使用的是 Windows 10,但我不知道如何解决此问题

标签: batch-filecmd

解决方案


当前每次goto :startprg你重新set模式。只需将标签移至 aftermode con:即可仅启动一次。所以应该是:

@echo off
mode con: cols=120 lines=24
:startprg
setlocal EnableDelayedExpansion

所以完整的代码如下:

@echo off
mode con: cols=120 lines=24

:startprg
setlocal EnableDelayedExpansion

set char=abcdeijklmnstuvwxyzABCDETUVYZ23456789^^%%_`^^%%_`^^%%_`^^%%_`^^%%_`☺☻♥♦♣♠◘•○☺☻♥♦♣♠◘♂♀q7•-6○Z♂n¡*     /*-+@#$*()_=-=+       
set count=0
set hla=0

:Number
set hla=120

set /a length=-1 + !hla!

:Loop
set /a count+=1
set /a rand=%Random%%%61
set buffer=!buffer!!char:~%rand%,1!
if !count! leq !length! goto Loop

title ^!buffer!
echo ^!buffer!
set /a length+=1

endlocal
goto startprg

推荐阅读