-2

我有一个小程序用于测试,将放在我的大程序中。

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

因此,如果我在 IP 构造器 192.168.1.4 中输入 IP,它将回显 Valid。但是,如果我在 IP 结构中输入了一堆数字,例如 544564212.545,它将调用错误标签/标记事物 (:marker) 并回显无效。所以它只能在 IP 结构字符串上工作。

谢谢你们所有的帮助。我的程序将在几天后可用。谢谢你的帮助。

4

2 回答 2

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.
)
于 2013-03-20T10:47:54.283 回答
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
于 2013-03-20T16:30:41.387 回答