[英]Escape Characters When Using Clip in Batch
在命令行上運行的命令是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^|
但我想不通。 可能嗎?
你的命令行被解析了好幾次,所以你必須使用足夠的轉義來隱藏所有的特殊字符:
echo for /F "tokens=1* delims= " %%A in ('nslookup myip.opendns.com. resolver1.opendns.com 2^^^^^^^> nul ^^^^^^^| find "Address:"'^) Do (echo(%%B^) | clip
首先解析整個命令行,結果如下:
echo for /F "tokens=1* delims= " %%A in ('nslookup myip.opendns.com. resolver1.opendns.com 2^^^> nul ^^^| find "Address:"') Do (echo(%%B) | clip
接下來再次解析管道 ( |
) 的每一側,因此左側結果為這一行:
echo for /F "tokens=1* delims= " %%A in ('nslookup myip.opendns.com. resolver1.opendns.com 2^> nul ^| find "Address:"') Do (echo(%%B)
如您所見,我還轉義了右括號,因此代碼甚至可以在帶括號的代碼塊中使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.