我有下面的代码,它返回给定服务器的主机名和IP地址。我怎样才能将主机名作为输出?
FOR /F %%i in (servers.txt) do FOR /F "skip=3 delims=: tokens=2 usebackq" %%j in (`nslookup %%i`) do @echo %%j >> Devices_With_IP.txt
答案 0 :(得分:1)
尝试在findstr
的输出上使用nslookup
命令,只获取包含“名称”的行。
FOR /F %%i in (servers.txt) do FOR /F "tokens=2 usebackq delims=: " %%j in (`nslookup %%i ^| findstr Name`) do @echo %%j >> Devices_With_IP.txt
请注意,我还重新排列了第二个循环中的/F
条件,以便将空格包含为分隔符,这将删除输出前的前导空格。
使用find
命令代替findstr
-
FOR /F %%i in (servers.txt) do FOR /F "tokens=2 usebackq delims=: " %%j in (`nslookup %%i ^| find "Name"`) do @echo %%j >> Devices_With_IP.txt
刚才意识到使用find而不是findstr使得(几乎)与dbenham的答案完全相同。
答案 1 :(得分:1)
假设您的机器使用英语:
FOR /F %%i in (servers.txt) do FOR /F "delims=: tokens=2" %%j in (
'nslookup %%i ^| find "Name:"'
) do @echo %%j >> Devices_With_IP.txt