This is the example, a shortcut was installed to this code
:
@echo off
::@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
:: $Header: C:/DBAREIS/Projects.PVCS/Win32/ScriptingTipsAndTricks/EXAMPLE[cmd].IsIpAddress() [determine is a string looks valid as an IP4 address].cmd.pvcs 1.0 11 Jul 2014 19:31:02 USER "Dennis" $
::@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
setlocal
echo TESTING: IsIpAddress()
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
call :TEST "1.2.3.4" "Y"
call :TEST "1.2.3.04" "N"
call :TEST "01.2.3.4" "N"
call :TEST "1" "N"
call :TEST "1.2" "N"
call :TEST "1.2.3" "N"
call :TEST "" "N"
call :TEST "1.2.3.0" "Y"
call :TEST ".2.3.4" "N"
call :TEST "1.2..4" "N"
goto :EOF
echo.
echo NOTE: Current code won't pick this up as a mistake
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
goto :EOF
::@@@@@@@@@@@
:TEST
::@@@@@@@@@@@
set TestIpAddress=%~1
set ExpectedAnswer=%~2
echo TESTING IP ADDRESS: "%TestIpAddress%"
call :IsIpAddress "IpAddressPassed" "%TestIpAddress%"
::if "%IpAddressPassed%" == "Y" goto IpWasPassed
echo * IS IP ADDRESS: %IpAddressPassed%
if "%IpAddressPassed%" == "%ExpectedAnswer%" echo * CORRECT :-)
if not "%IpAddressPassed%" == "%ExpectedAnswer%" echo * ####### ERROR: Incorrect Result... #########
echo.
goto :EOF
::+++++++++++++++++++++++++++++++
:IsIpAddress
::+++++++++++++++++++++++++++++++ Version 14.150c
::--- Init ---------------------------------------------------------------
set ResultVar=%~1
set ThisIp=%~2
set %ResultVar%=N
::--- Expect 4 octects (and no more) ------------------------------------
set O1=& set O2=& set O3=& set O4=& set O5=
for /F "tokens=1,2,3,4,5 delims=." %%i in ("%ThisIp%") do set O1=%%i& set O2=%%j& set O3=%%k& set O4=%%l& set O5=%%m
if "%O1%" == "" goto :EOF
if "%O2%" == "" goto :EOF
if "%O3%" == "" goto :EOF
if "%O4%" == "" goto :EOF
if not "%O5%" == "" goto :EOF
::--- Don't Allow OCTAL IP addresses from TANDEM ------------------------
if not "%O1%" == "0" if "%O1:~0,1%" == "0" goto :EOF
if not "%O2%" == "0" if "%O2:~0,1%" == "0" goto :EOF
if not "%O3%" == "0" if "%O3:~0,1%" == "0" goto :EOF
if not "%O4%" == "0" if "%O4:~0,1%" == "0" goto :EOF
::--- Check only digits and full stop -----------------------------------
set HashIfIp=%ThisIp:.=%#
set HashIfIp=%HashIfIp:0=%
set HashIfIp=%HashIfIp:1=%
set HashIfIp=%HashIfIp:2=%
set HashIfIp=%HashIfIp:3=%
set HashIfIp=%HashIfIp:4=%
set HashIfIp=%HashIfIp:5=%
set HashIfIp=%HashIfIp:6=%
set HashIfIp=%HashIfIp:7=%
set HashIfIp=%HashIfIp:8=%
set HashIfIp=%HashIfIp:9=%
if "%HashIfIp%" == "#" set %ResultVar%=Y
goto :EOF