我有一个小程序可以放入我的大计划中进行测试。
所以我想在一个set / p var = varible中输入一个IP地址,但它只能是数字。不是信。即如果我要进入facebook.com,它会抛出错误,即回声Invaild并暂停
因此,如果我在IP structer 192.168.1.4中输入IP,它将回显有效。但如果我输入一堆数字,如544564212.545不在IP结构中,它将调用错误标签/标记物(:标记)和回声Invaild。所以它必须只能在IP结构字符串上工作。
谢谢你们的帮助。我的计划将在几天内提供。谢谢你的帮助。
答案 0 :(得分:0)
试试这个:
set /p var=Enter IP address:
set var=%var: =%
echo %var%|findstr /rc:"^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$" >nul
if %errorlevel% equ 0 (
echo Valid IP address.
) else (
echo Not a valid IP address.
)
答案 1 :(得分:0)
我做了一个稍微复杂的脚本。您应该从命令行调用它:<script.cmd> IP
,例如。 <script.cmd> 192.168.1.4
。
@echo off &setlocal enabledelayedexpansion
set "var=%~1"
set "flag="
for /f "tokens=1-4delims=." %%i in ("%var%") do set /a var1=%%i, var2=%%j, var3=%%k, var4=%%l
for /l %%i in (1,1,4) do if %%i neq 1 (set "var0=!var0!.!var%%i!") else set "var0=!var%%i!"
for /l %%i in (1,1,4) do if "!var%%i!" equ "" set "flag=1"
if not defined flag for /l %%i in (1,1,4) do if !var%%i! lss 0 set "flag=1"
if not defined flag for /l %%i in (1,1,4) do if !var%%i! gtr 255 set "flag=1"
if defined flag (echo "%var0%" is NOT a valid IP.) else echo "%var0%" is a valid IP.
endlocal