【发布时间】:2014-09-20 10:38:32
【问题描述】:
我正在尝试一种更简单的方法,阅读不太容易弄乱命令,解析 IP 地址,然后将变量设置为所述解析名称。我尝试了以下方法:
FOR /F "TOKENS=3 DELIMS=gw" %%A IN ('PING -a -n 1 IPADDRESS') DO SET "PC=%%A"
哪个在:
Pinging PCNAME [IPADDRESS} with 32 bytes of data:
Reply from IPADDRESS: bytes=32 time =15ms TTL=122
Ping statistics for IPADDRESS:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss)
Approximate round trip times in milli-seconds:
Minimum = 15ms, Maximum = 15ms, Average = 15ms
适用于大多数电脑名称。只有几个“g”和“w”,所以唯一带有第三个标记的行是第一行。我遇到的问题是我们有很多电脑名称,其中一些有“g”。对于那些已解决的地址,它会在该行的第三个“g”处剪切变量。
我尝试在 NSLOOKUP 上使用它,但命令给了我:
C:\Windows\System32>nslookup IPADDRESS
Server: SERVERNAME
Address: SERVERIP
Name: PCNAME
Address: IPADDRESS
我可以跳过 FOR /F(即跳过 2),但它会读取第 3 行和第 4 行;即,它将变量设置为第 3 行的 pc 名称,但随后在第 4 行将其更改为我不需要的垃圾。
就像我说的,有没有办法轻松解决这个问题?我可以在 for in a for 中进行调用和延迟扩展,但这更难跟踪。
【问题讨论】:
-
天哪 - 使用 Powershell。或VB脚本。 任何东西,但 .bat 文件!!!!
-
@FoggyDay 已经更像是一个
.cmd文件了。
标签: variables batch-file for-loop