На уровне примитивного вируса: в текст батника после GoTo :Eof пишется служебная инфа для работы счетчика.
Батник позволит запустить Ваш код не более указанного числа раз
Код:

@Echo Off
cls
Set /A NTime=5
SetLocal EnableExtensions EnableDelayedExpansion
Set /A iTime=0
Set "iBat=%~dpnx0"
FOR /F "usebackq tokens=1,2,3 delims= " %%i IN (`type "%iBat%"`) DO (
If "%%i"=="@@@" Set /A iTime+=1
)
If %iTime% GEQ %NTime% GoTo :Eof
echo @@@ %Date% %Time% >>"%iBat%"
Echo before the script was run %iTime% times
Pause
GoTo :Eof
Батник позволит запустить Ваш код не более указанного числа дней, не обязательно вподряд
Код:

@Echo Off
cls
Set /A NDays=3
SetLocal EnableExtensions EnableDelayedExpansion
Set /A iTime=0
Set "iBat=%~dpnx0"
FOR /F "usebackq tokens=1,2,3 delims= " %%i IN (`type "%iBat%"`) DO (
If "%%i"=="@@@" Set /A iTime+=1
Set "iDate=%%j"
)
If %iTime% GEQ %NDays% GoTo :Eof
If Not "%Date%"=="%iDate%" echo @@@ %Date% %Time% >>"%iBat%"
Echo before the script was run %iTime% days, last day was %iDate%
Pause
GoTo :Eof
Вместо (или после) Echo перед Pause можете написать свой код