Пакет: замедление скорости обработки
Я создаю небольшой проект, чтобы произвести впечатление на моих друзей, и мне было любопытно, как можно замедлить отток текста в программе, используя только одну строку.
У меня возникла проблема (и поверьте мне, я провел исследование), и мне было любопытно, как вообще снизить скорость пакетной обработки, не делая 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 /?
- Скоро.