如何在“ping -a”输出中提取主机名?

时间:2013-03-14 12:14:44

标签: regex batch-file extract ping hostname

我必须在“ping -a”输出中提取主机名,但我无法弄明白,我正在考虑使用正则表达式。 我需要在 [之间提取字符才能获得computername.windowsdomain.这似乎可能吗? 我找不到用于批处理正则表达式的良好资源,所有这些都是关于JS,PHP和.NET的。

由于我是法国人,ping -a的输出开头是:

Envoi d'une requête 'ping' sur XXXXXXXX.DOMAIN.NAME.com [127.0.0.1]

2 个答案:

答案 0 :(得分:1)

批处理文件本身没有正则表达式功能。有一些选项可以通过findstr过滤文本文件或程序输出中的行,这些选项使用自己对正则表达式的解释,这些正则表达式看似相似,但是有缺陷且有限。

在任何情况下,您都可以通过以下方式逃脱:

set hostname=
for /f "skip=1 tokens=2" %%x in ('ping -n 1 -a so.me.i.p') do if not defined hostname set hostname=%x
echo %hostname%

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
FOR /f "delims=" %%i IN ('ping -n 1 -a 127.0.0.1^|find "["') DO CALL :sub %%i
ECHO hostname: %hostname%
ECHO domain: %domain%
ECHO whole chebang: %chebang%
GOTO :eof

:sub
SET hostname=%2
IF NOT %hostname:~0,1%==[ shift&GOTO sub
SET chebang=%1
FOR /f "tokens=1*delims=." %%a IN ("%1") DO SET hostname=%%a&SET domain=%%b
GOTO :eof

应该适合你。变量名称不是我的专业领域......