Code broken?

Discussion forum for all Windows batch related topics.

Moderator: DosItHelp

Post Reply
Message
Author
Adrianvdh
Posts: 177
Joined: 16 May 2013 13:00

Code broken?

#1 Post by Adrianvdh » 05 Aug 2013 08:28

Hey everyone...

I am struggling to make a function with code that was post on the forum a few months ago..

I goes as so...

Code: Select all

:checkPingLayersReg
reg query "%RegKey%" /v "PING_PLAYERS" >nul 2>nul
if "%errorlevel%"=="0" for /f "tokens=2*" %%i in ('reg query "%RegKey%" /v "PING_PLAYERS"') do set "pinglayersnumber=%%j"
call :PinglayerMaxMin

set /a "numeric=pinglayersnumber" 2>nul && (
  if "!numeric!"=="!pinglayersnumber!" (
    if !numeric! geq %pinglayersmin% (
      if !numeric! leq %pinglayersmax% (
        exit /b
      ) else (
        echo input wasn't less than 11
      )
    ) else (
      echo input wasn't greater than 0
    )
  ) else (
    echo input wasn't numeric
  )
) || (
  echo failed to assign any numeric value
)
exit /b

call :Defaultpinglayer
>nul reg add "%RegKey%" /v "PING_PLAYERS" /t REG_SZ /d "%pinglayersnumber%" /f
exit /b

:Defaultpinglayer
set pinglayersnumber=2
exit /b

:PinglayerMaxMin
set pinglayersmax=10
set pinglayersmin=1
exit /b



it gives me an unexpected error, saying 1 was unexpected.
It has a lot work.

Thanks for your time :)

foxidrive
Expert
Posts: 6031
Joined: 10 Feb 2012 02:20

Re: Code broken?

#2 Post by foxidrive » 05 Aug 2013 08:53

Show us where the issue is. Try this.

Code: Select all

@echo off
setlocal enabledelayedexpansion

set "pinglayersnumber=2"
call :go
set "pinglayersnumber=0"
call :go
set "pinglayersnumber=-1"
call :go
set "pinglayersnumber=11"
call :go
set "pinglayersnumber=aa"
call :go
set "pinglayersnumber=12bb34"
call :go
set "pinglayersnumber="
call :go
echo done
pause
goto :EOF

:go

call :PinglayerMaxMin



set /a "numeric=pinglayersnumber" 2>nul && (
  if "!numeric!"=="!pinglayersnumber!" (
    if !numeric! geq %pinglayersmin% (
      if !numeric! leq %pinglayersmax% (
       echo numeric is !numeric!&pause
      exit /b
      ) else (
        echo input wasn't less than 11
      )
    ) else (
      echo input wasn't greater than 0
    )
  ) else (
    echo input wasn't numeric
  )
) || (
  echo failed to assign any numeric value
)

pause

exit /b

call :Defaultpinglayer
>nul reg add "%RegKey%" /v "PING_PLAYERS" /t REG_SZ /d "%pinglayersnumber%" /f
exit /b

:Defaultpinglayer
set pinglayersnumber=2
exit /b

:PinglayerMaxMin
set pinglayersmax=10
set pinglayersmin=1
exit /b

Post Reply