Пакет: замедление скорости обработки

Я создаю небольшой проект, чтобы произвести впечатление на моих друзей, и мне было любопытно, как можно замедлить отток текста в программе, используя только одну строку.

У меня возникла проблема (и поверьте мне, я провел исследование), и мне было любопытно, как вообще снизить скорость пакетной обработки, не делая echo hi TIMEOUT 5>nul echo hi againи т. д. Но вместо этого только одна строка в начале, которая замедляет вывод текста для всего пакетного скрипта. Спасибо!

1 ответ

Единственный реальный способ сделать это на пакетном языке - это использовать call Команда для вызова функции и для работы. Это может быть размещено в нижней части вашего пакетного документа.

Кроме того, поскольку вы не совсем ясно поняли свою цель здесь и прочитали комментарии, я собираюсь предположить, что из echo hi & TIMEOUT 5>nul echo hi again Вы хотите отобразить каждую строку через 5 секунд, НО только из одной строки или команды. Это можно легко сделать с call & FOR петля. В этом случае мы можем использовать %* собрать все "Words Line One", "Words Line Two" что вы хотите.

Комбинируя это с простой синтаксической заменой, мы удаляем кавычки.

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, и изменить его для работы с call в организованном вопросе.

Этот скрипт будет отображать букву за буквой и для каждого 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 /?
  • Скоро.
Другие вопросы по тегам