使用Windows批处理将长字符串复制到剪贴板时,会出现“命令的语法不正确”错误

问题描述 投票:3回答:2

这是我要复制到剪贴板的字符串:

mail from:<[email protected]>

我试过了

echo mail from:^<[email protected]^> | clip

它告诉我“命令的语法不正确。”但是当我试着

echo mail from:^<[email protected]^> 

它显示了正确的结果。所以我想知道如何修改命令?

batch-file
2个回答
3
投票

@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


© www.soinside.com 2019 - 2024. All rights reserved.