批次:处理速度变慢

时间:2018-12-22 05:27:09

标签: performance batch-file reducing

我正在创建一个小项目来打动我的朋友,并对如何仅用一行就可以减慢程序中的文本输出感到好奇。

我遇到了一个问题(相信我,我做了我的研究),并且对如何在不进行echo hi TIMEOUT 5>nul echo hi again等操作的情况下如何减慢批处理速度感到好奇。但是,相反,开头的一行,这会减慢整个批处理脚本的文本输出。谢谢!

1 个答案:

答案 0 :(得分:0)

使用批处理语言执行此操作的唯一真实方法是使用call命令来调用函数并工作。可以将其放在批处理文档的底部。

此外,由于您对此处的目标和阅读评论并不清楚,因此我假设从echo hi & TIMEOUT 5>nul echo hi again开始,您想在5秒后显示每一行,但 But 只需一行或一条命令。使用callFOR循环可以轻松完成此操作。在这种情况下,我们可以使用%*来收集您想要的所有"Words Line One""Words Line Two"

将此与简单的syntax-replacement结合起来可以删除引号,我们很高兴。

DelayedLine.bat

@echo off
@setlocal EnableDelayedExpansion

Rem | To use the command, Call :SlowOutput "Desired Line" "Desired Line" "Desired Line"

Call :SlowOutput "Line Number One" "Line Number Two" "Line Number Three"

pause>nul
Goto :EOF

:SlowOutput
for %%A in (%*) do (

    Set "String=%%A"
    Set String=!String:"=%!

    echo !String!

    Rem | Change 5 To How Many (Seconds) You Wish
    Timeout 5 /NoBreak>Nul
)
goto :EOF

如果您的目标是要产生打字效果,我们可以hackoo在此线程here上使用脚本,并对其进行修改以与call一起使用。 / p>

此脚本将逐字母显示字母,并为每个call "Word" "Word"新引号添加一个新行。所有操作都通过call

LetterDelay.bat

@echo off

Rem | To use the command, Call :SlowText "Desired Text"
Rem | To combine two "echo's" on one line we can use the "&"

Call :SlowText "Hello!" & Call :SlowText "How is your day today?"

pause>nul
Goto :EOF

:SlowText
(
echo strText=wscript.arguments(0^)
echo intTextLen = Len(strText^)

echo intPause = 100
echo For x = 1 to intTextLen
echo     strTempText = Mid(strText,x,1^)
echo     WScript.StdOut.Write strTempText
echo     WScript.Sleep intPause
echo Next

)>%tmp%\%~n0.vbs
@cScript.EXE /noLogo "%tmp%\%~n0.vbs" "%~1"

Rem | echo. is optional. It's used as a constant for a newline \n
echo.
goto :EOF

要获取有关任何命令的帮助,请执行以下操作:

  • call /?
  • set /?
  • for /?
  • if /?
  • find /?
  • 等等。