Я получаю сообщение об ошибке «Максимальная глубина рекурсии» после установки «setlocal enabledelaydexpansions» в моем скрипте Batch. Я уже читал http://ss64.com/nt/setlocal.html, но не могу понять, как это решить. Вот сценарий, вызывающий эту проблему.превышена максимальная глубина рекурсии, вызванная setlocal enabledelayedexpansion? (BATCH)
.
..
...
:MESSAGE
set /p "message=Message:"
setlocal enabledelayedexpansion
:ANALYSIS
if "%message%"=="%spam%" (
set /a counter=%counter% + 1
if !counter! GTR 2 (
goto :SPAM
) ELSE (
GOTO OK
)
) ELSE (
set counter=0
GOTO OK
)
:SPAM
echo.
echo stop spamming
echo.
GOTO MESSAGE
:OK
set "spam=%message%"
...
..
.
Я попытался установить «setlocal disabledelayedexpansion», «endlocal» после этого модуля скрипта, но не повезло. Надеюсь, это была небольшая ошибка.
EDIT:
Да, это похоже на работу, но я не могу использовать восклицательные знаки в настоящее время :( я поставил disabledelayedexpansion перед входом% сообщение% из-за этого
Я также видел в настоящее время. что этот скрипт создает больше проблем, чем я думал.Применение ^! вызывает значение переменной% message%, определенной позже в скрипте. Ввод ^^! приносит следующую запись, которая изменяет% сообщение%. Вот значения, показывающие :
REM Bad word filter with Format change for catching mutated vowels
chcp 1252>nul
SET before=%message%
SET message=%before:fuck=XXXXX%
SET before=%message%
SET message=%before:loser=XXXXX%
chcp 850>nul
^! дает мне раньше: fuck
^^! дает мне раньше: loser