1

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

因为我是法国人,所以输出ping -a开始于:

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

2 回答 2

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%
于 2013-03-14T12:42:19.957 回答
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

应该为你工作。变量名不是我的专业领域......

于 2013-03-14T14:44:30.933 回答