Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何使用批处理文件从输出中获取特定行?_Windows_Batch File - Fatal编程技术网

Windows 如何使用批处理文件从输出中获取特定行?

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条件,以便将空格作为除数,这

下面的代码返回给定服务器的主机名和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
条件,以便将空格作为除数,这将删除输出之前的前导空格

使用
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