使用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批处理将长字符串复制到剪贴板时,会出现“命令的语法不正确”错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Bash for Windows 复制到剪贴板

如何将字符串复制到剪贴板?

当我通过 Git Bash 中的 ssh 在远程 Linux 机器上运行命令时,如何将文件的内容直接复制到我的 Windows 剪贴板中?

批处理将字符串输出到Windows剪贴板

Windows编程系列第九篇:剪贴板使用

在 Windows XP 中将剪贴板传递给批处理