Windows 如何使用批处理文件从输出中获取特定行?
下面的代码返回给定服务器的主机名和IP地址。如何仅将主机名作为输出Windows 如何使用批处理文件从输出中获取特定行?,windows,batch-file,Windows,Batch File,下面的代码返回给定服务器的主机名和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 尝试在nslookup的输出上使用findstr命令,仅获取包含“Name”的行 请注意,我还重新排列了第二个循环中的/F条件,以便将空格作为除数,这
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
尝试在
nslookup
的输出上使用findstr
命令,仅获取包含“Name”的行
请注意,我还重新排列了第二个循环中的/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的答案(几乎)完全相同。假设您的机器使用英语:
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
没有生成任何输出。@PeanutsMonkey,在只输出到终端之前,我刚刚用_IP.txt将重定向添加到您的
设备。这就是问题所在吗?不是。我也有。不会显示结果,也不会生成文件。@PeanutsMonkey它对我有效。你正在运行什么版本的Windows?我正在运行Windows 7。我确实可以访问findstr命令。对dir
命令运行它,它运行得很好。
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