0

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

到目前为止,这是我的脚本

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

3 回答 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 语句之前。

于 2012-10-16T15:07:02.170 回答
1

这是在帧之间减慢速度的一种非常简单的方法示例:

@echo exiting script
ping localhost -n 2 > nul
cls
@echo exiting script .
ping localhost -n 2 > nul
cls
@echo exiting script ..
ping localhost -n 2 > nul
cls
@echo exiting script ...
ping localhost -n 2 > nul
cls
@echo exiting script ....
ping localhost -n 2 > nul
cls
@echo exiting script .....
ping localhost -n 5 > nul
cls
于 2018-10-19T16:44:24.507 回答
0

不是内置的,但仍然是命令行:sleep.exe来自 Windows 资源工具包(可在此处获得:http: //www.microsoft.com/en-us/download/details.aspx?id=17657

用法: sleep time-to-sleep-in-seconds
sleep [-m] time-to-sleep-in-milliseconds
sleep [-c] commited-memory ratio (1%-100%)

于 2012-10-16T13:40:58.933 回答