在命令行上工作的命令是for /f "tokens=1* delims= " %A in ('nslookup myip.opendns.com. resolver1.opendns.com 2^>NUL^|find "Address:"') Do (echo %B)。
在一个成为for /f "tokens=1* delims= " %%A in ('nslookup myip.opendns.com. resolver1.opendns.com 2^>NUL^|find "Address:"') Do (echo %%B)的批处理中,它可以工作
但是要复制到剪贴板,我需要对2^>NUL^|中的转义字符做更多的工作。在批处理中,我得到了最接近的echo.for /f "tokens=1* delims= " %%A in ('nslookup myip.opendns.com. resolver1.opendns.com 2^^^>NUL^^^|find "Address:"') Do (echo %%B)|clip。
它的输出是for /f "tokens=1* delims= " %A in ('nslookup myip.opendns.com. resolver1.opendns.com 2>NUL|find "Address:"') Do (echo %B),它失败了,因为2>nul|没有正确转义。
我尝试在2>NUL|中添加一个第四甚至第五个插入符,尝试将输出裁剪为2^>nul^|,但我搞不清楚。有可能吗?
发布于 2019-12-12 13:33:05
您的命令行被解析了几次,因此您必须使用足够的转义来对所有这些字符隐藏特殊字符:
echo for /F "tokens=1* delims= " %%A in ('nslookup myip.opendns.com. resolver1.opendns.com 2^^^^^^^> nul ^^^^^^^| find "Address:"'^) Do (echo(%%B^) | clip首先,对整个命令行进行解析,从而生成以下行:
回波用于/F "tokens=1* delims=“%A in ('nslookup myip.opendns.com. resolver1.opendns.com 2^^^> nul ^^\\查找”Address:“) Do (%B)
接下来,将再次解析管道的每一侧(|),因此左边的结果如下:
回波用于/F "tokens=1* delims=“%A in ('nslookup myip.opendns.com. resolver1.opendns.com 2^> nul ^ find”Address:‘’) Do (%B)
正如您所看到的,我也转义了结束括号,所以代码甚至可以在带括号的代码块中使用。
https://stackoverflow.com/questions/59304615
复制相似问题