2

嘿,我又来了,这次我想知道如何在输入变量的括号之间输入 IP 地址。

我希望代码看起来像这样。

set input=
set /p input=IP Address: [     ].[     ].[     ].[     ]

一旦我执行了批处理并输入了我的 IP,我希望它看起来像这样。

IP Address: [ 127 ].[ 0 ].[ 0 ].[ 1 ]

反正有这样做吗?

4

1 回答 1

1

我认为这将是一件非常复杂的事情。

如果您尝试在 Batch 中执行此操作,则需要在用户每次键盘击中时用大括号重写您的行。到目前为止,我知道的唯一一个监听单个 KB-hit 的命令是 Choice 命令。如果您以某种方式管理它以在每个 KB 命中时重复用户输入,您需要使用退格字符对批处理文件进行 bytehack,并具有将用户输入与大括号组合的逻辑。这不仅非常不舒服而且非常缓慢。

我建议让您的用户输入任何字符串,然后通过“regex”检查它(windows regex 不是很好)

这是我用来检查打印机 IP 的示例函数。

%printer% 将是您的用户输入的字符串。这个函数还有一个 nslookup 函数。如果你愿意,你可以省略这个。这第二行做了所有的魔法,但你也可以输入一些不可能的 IP,比如 321.099.000.666

:CheckIP
echo %printer% | findstr /R "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*">nul || goto :EOF
FOR /F "tokens=* delims=" %%A in ('nslookup %printer% 2^>^&1 ') do (
    echo %%A | findstr /R /C:"Name: ">nul && set printer=%%A
    echo %%A | findstr /R /C:"\*\*\*">nul && (set printerfqdn=%printer% & goto printerip)
)
rem ***************************************
rem * Name:    printername.location.companydomain
rem * printerfqdn begins at position 10
rem ***************************************
set printer=%printer:~9%
goto :EOF
于 2013-04-10T14:04:53.367 回答