O problema é o bloco de instruções if - ele é avaliado em um bloco. Resolva com duas alterações:
- adicionar delayedexpansion setlocal
- use! variable! blocos internos em vez de% variable% para que eles avaliem "on the fly".
Você pode ver uma boa explicação em: this super usuário answer Joey
Seu código deve se parecer com:
setlocal enabledelayedexpansion
:loop
@set /a counter=%counter%+1
@if %counter% GTR 2 (
@set /a file_counter=0
for %%x in ("%Stckalz_Input%\%Directory_Stckalz_Job%\Results\*") do (set /a file_counter+=1)
@echo Server is busy or not responding. !file_counter!
)
goto :loop