在寻找IP时CMD和set / p

时间:2013-03-20 09:09:59

标签: cmd

我有一个小程序可以放入我的大计划中进行测试。

所以我想在一个set / p var = varible中输入一个IP地址,但它只能是数字。不是信。即如果我要进入facebook.com,它会抛出错误,即回声Invaild并暂停

因此,如果我在IP structer 192.168.1.4中输入IP,它将回显有效。但如果我输入一堆数字,如544564212.545不在IP结构中,它将调用错误标签/标记物(:标记)和回声Invaild。所以它必须只能在IP结构字符串上工作。

谢谢你们的帮助。我的计划将在几天内提供。谢谢你的帮助。

2 个答案:

答案 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