在我的批處理腳本中設置「setlocal enabledelaydexpansions」後,出現「超出最大遞歸深度」錯誤。我已經閱讀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」但沒有運氣。希望這只是我犯的一點小錯誤。
編輯:
是的,這似乎工作,但現在我不能使用感嘆號:( 我進入,因爲這個消息%之前%設定disabledelayedexpansion
我現在也看到了。這個腳本會產生更多的問題,然後我想,鍵入^!提示後面在腳本中定義的%message%變量的值,鍵入^^!會帶來下一個改變%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
^!給我之前:他媽的
^^!給我之前:失敗者