2012-10-16 52 views
0

我正在创建一个简单的bat文件,播放存储在120 .txt文件中的一些ASCII动画。我的脚本可以工作,但工作速度太快。我想找一种方法来减慢它的一点。我试过了TIMEOUT 1命令,但它只能播放每秒1张图片,速度太慢。没有从Windows 7命令行移动,是否有可行的解决方案?控制ASCII动画的帧速率

这是我的脚本到目前为止

@echo off 
MODE CON: COLS=91 LINES=41 
cls 
:3 
setlocal enableextensions enabledelayedexpansion 
FOR /R %%i in (*.txt) do (type "%%i" 
) 
goto :3 

回答

1

您可以使用FOR/L循环来引入延迟。这是一个脚本,它引入了大约100毫秒的延迟。靠近顶部的简单测试计算需要多少次迭代才能接近100毫秒。这个数字会因机器而异。根据需要调整msecDelay的定义以获得您想要的结果。

@echo off 
setlocal 

:: Compute the number of iterations required to get the desired delay 
set msecDelay=100 
set ticks=100000 
set "start=%time%" 
for /l %%N in (1 1 %ticks%) do rem 
set "stop=%time%" 
for /f "tokens=3,4 delims=:.," %%A in ("%start%") do set /a start=1%%A%%B-10000 
for /f "tokens=3,4 delims=:.," %%A in ("%stop%") do set /a stop=1%%A%%B-10000 
if %start% gtr %stop% set /a stop+=6000 
set /a delay=msecDelay*ticks/(stop-start)/10 

MODE CON: COLS=91 LINES=41 
cls 
:3 
FOR /R %%i in (*.txt) do (
    type "%%i" 
    for /l %%n in (1 1 %delay%) do rem 
) 
goto :3 

我想知道如果在循环中移动CLS,在您的TYPE语句之前,您会获得更好的结果。

+0

感谢你们俩。 for /循环完美运行。我没有尝试睡眠cmd,因为我想保持资源最低。 –