这是我要复制到剪贴板的字符串:
mail from:<[email protected]>
我试过了
echo mail from:^<[email protected]^> | clip
它告诉我“命令的语法不正确。”但是当我试着
echo mail from:^<[email protected]^>
它显示了正确的结果。所以我想知道如何修改命令?
@Magoo展示了一种解决方案。
您需要三个插入符号,因为首先将解析完整的行并将插入符转义为字符串:
echo mail from:^<[email protected]^> | clip
当第一个插入符号逃脱时,第三个插入符号会转义重定向字符。
然后管道为双方创建两个新的cmd.exe实例。 在两个cmd.exe中,第二次解析部分命令。
批处理解析器解析该行两次需要三个插入符号。 (该空间仅用于更好的可视化)
echo ^^ ^< | clip
===>
echo ^ < | clip
===>
echo < | clip
两个职业相同也会完全不同
echo ^^ < | clip
===>
failure as the < wouldn't be escaped and works as redirection
其他方式 为了避免三重职业,你也可以使用百分比变量扩展
set "text=echo mail from:^<[email protected]^>"
echo %%text%% | clip
这几乎是相同的效果,在批处理文件中,双倍百分比减少到一个百分点,在管道cmd实例中,echo %text%
将被扩展,然后单个插入符号转义重定向字符
有关更有趣的样本,您可以查看 qazxsw poi