批量使用剪辑时转义字符
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)
如您所见,我也对右括号进行了转义,因此代码甚至可以在带括号的代码块中使用。
在命令行上运行的命令是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)
如您所见,我也对右括号进行了转义,因此代码甚至可以在带括号的代码块中使用。