我正在处理批处理文件,我需要在屏幕上打印连字符(-)作为分隔符。是否有 fast (不到两秒钟)命令可以做到这一点?
我已经进行了多次搜索查询,但无法在各种网站上找到答案。
(code to find screen size)
for /l %%a in (1,1,%screen size var%) do (set "line=%line%-")
echo %line%
输出应在控制台上显示一行连字符。
答案 0 :(得分:1)
如果可以计算出批处理命令来检索columns
值,则可以使用MODE命令的输出;
MODE CON
C:\Users\gjp>mode con
Status for device CON:
----------------------
Lines: 9001
Columns: 120
Keyboard rate: 31
Keyboard delay: 1
Code page: 850
答案 1 :(得分:0)
这未经测试,但基于gjpio的答案中来自Mode CON
的输出:
@Echo Off
For /F "Skip=4Tokens=1*Delims=:" %%A In ('Mode CON')Do (For /L %%C In (1,1,%%B)Do @Set/P "=-"<Nul)&Echo( &GoTo :Draw
:Draw
Pause
如果您打算在脚本中多次使用分隔符,则可以将其保存到变量中:
@Echo Off
For /F "Skip=4Tokens=1*Delims=:" %%A In ('Mode CON')Do (For /L %%C In (1,1,%%B)Do (Call Set "separator=%%separator%%-"))&GoTo :Next
:Next
Echo Welcome to %~nx0
Echo %separator%
Pause
作为最后的考虑,以防万一您觉得它执行起来更快,我想我也最好提供使用延迟扩展的版本:
@Echo Off&SetLocal EnableDelayedExpansion&Set "separator="
For /F "Skip=4Tokens=1*Delims=:" %%A In ('Mode CON')Do (For /L %%C In (1,1,%%B)Do Set "separator=!separator!-")&GoTo :Next
:Next
Rem Uncomment the next line if you don't want to use delayed expansion in the rest of the script
::EndLocal&Set "separator=%separator%"
Rem Your code goes here
Echo Welcome to %~nx0
Echo %separator%
Pause
除了上述所有功能之外,您还可以利用powershell来做到这一点:
@Echo Off
For /F %%A In ('Powershell -NoP "Write-Host('-' * $(Get-Host).UI.RawUI.WindowSize.Width)"')Do Set "separator=%%A"
Echo Welcome to %~nx0
Echo %separator%
Pause
答案 2 :(得分:0)
我建议您使用以下代码:
@echo off
setlocal EnableDelayedExpansion
for /F "skip=4 tokens=2" %%A IN ('mode CON') do (
for /L %%B IN (1 1 %%A) do set "hyphen=!hyphen!-"
echo !hyphen!
goto :subroutine
)
:subroutine
echo You may continue here
pause
这有点复杂,但是应该做您想做的事。
代码在mode CON
的命令输出中搜索列,并将这些列相应地添加到hyphen
变量中。