我有一个程序,我在其中获取 IP 列表,对它们运行 nslookup,然后将它们存储到两个不同的文件中,一个包含 IP,一个仅包含 nslookup 的输出。要将对 nslookup 的调用减半,我想调用一次,将其存储在变量中,然后写入两个文件。但是,一个简单的商店是行不通的。
set val=nslookup %ip%
显示
nslookup 127.0.0.1
而不是运行它的结果。
我找到了一种方法来做到这一点
nslookup %ip% | find "Name"> tempFile
set /P result=<tempFile
但我现在正在写入文件,然后取回值。对于这个成本,我还不如调用 nslookup 两次。它还需要我选择一条线(这一次对我来说很好,但在其他情况下它可能不起作用)。
我也尝试过使用 for 循环技巧
for /f "delims=" %%a in ('nslookup %ip% ^| find "Name"') do set name=%%a
但这只会返回最后一行或我用 find 指定的一行。仍然比前面的示例更好,因为没有临时文件,但仍然不完美。
所以我的问题是,是否有更好的方法将命令的返回值存储到变量中。
编辑:考虑
nslookup 127.0.0.1
返回
Server: fake.com
Address: 0.0.0.0
Name: localhost
Address: 127.0.0.1
现在,我想要的只是名称,因此返回一行适用于我当前的批处理文件。但是如果我还需要知道服务器怎么办,所以我想要
for /f "delims=" %%a in ('nslookup 127.0.0.1') do set returnVal=%%a
echo %returnVal%
显示
Server: fake.com
Address: 0.0.0.0
Name: localhost
Address: 127.0.0.1
现在它只显示在哪里
Address: 127.0.0.1