Ваш вопрос несколько неясен, но я предполагаю, что вы хотите, чтобы программа отображала ошибку в случайное время. Для этого вы можете использовать генератор случайных чисел.
set /a rndm=%random% * 10 / 32768 + 1
Этот код создаст переменную с именем "rndm" (это не обязательно должно называться rndm, вы можете назвать ее как угодно), которая является случайным числом от 1 до 10. Если вы хотите увеличить или уменьшить пул возможных чисел, вы можете изменить 10 в коде на любое другое. Так что если вы хотите случайное число от 1 до 3, вы должны сделать это:
set /a rndm=%random% * 3 /32768 + 1
Вы можете использовать это, чтобы генерировать случайную вероятность возникновения ошибки. Если вы хотите иметь шанс 1 на 10 выйти из цикла, очистить экран и войти в другой цикл, вы бы хотели, чтобы ваш код выглядел следующим образом:
@echo off
:start
echo %random%%random%%random%%random%
set /a rndm=%random% * 10 / 32768 + 1
if %rndm% == 1 goto errorstart
goto start
:errorstart
cls
:error
echo !!!!!!!!!!!!
goto error
Во время выполнения цикла программа генерирует случайное число от 1 до 10. Сразу после этого он проверяет, сгенерировано ли это число 1. Если это не 1, он продолжает цикл. Если это так, он переходит к метке "errorstart". Команда под меткой ошибки запуска очищает экран. Затем программа входит в цикл ошибок, где выводит восклицательные знаки до тех пор, пока программа не будет закрыта.
Этот код должен дать вам эффект, который вы ищете, но 1 из 10 слишком велик для программы, работающей так быстро, поэтому вы можете изменить это значение на 1 из 1000 или 1 из 10.000. Это должно сделать начальный цикл дольше, прежде чем второй цикл начнет работать.