使用Windows批处理将长字符串复制到剪贴板时,会出现“命令的语法不正确”错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Windows批处理将长字符串复制到剪贴板时,会出现“命令的语法不正确”错误相关的知识,希望对你有一定的参考价值。
这是我要复制到剪贴板的字符串:
mail from:<email@gmail.com>
我试过了
echo mail from:^<email@gmail.com^> | clip
它告诉我“命令的语法不正确。”但是当我试着
echo mail from:^<email@gmail.com^>
它显示了正确的结果。所以我想知道如何修改命令?
答案
@Magoo展示了一种解决方案。
您需要三个插入符号,因为首先将解析完整的行并将插入符转义为字符串:
echo mail from:^<email@gmail.com^> | 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@gmail.com^>"
echo %%text%% | clip
这几乎是相同的效果,在批处理文件中,双倍百分比减少到一个百分点,在管道cmd实例中,echo %text%
将被扩展,然后单个插入符号转义重定向字符
有关更有趣的样本,您可以查看 qazxsw poi
另一答案
尝试:
Why does delayed expansion fail when inside a piped block of code?
以上是关于使用Windows批处理将长字符串复制到剪贴板时,会出现“命令的语法不正确”错误的主要内容,如果未能解决你的问题,请参考以下文章
当我通过 Git Bash 中的 ssh 在远程 Linux 机器上运行命令时,如何将文件的内容直接复制到我的 Windows 剪贴板中?