gpt4 book ai didi

windows - bat 文件、函数和插入符号

转载 作者:可可西里 更新时间:2023-11-01 10:06:50 29 4
gpt4 key购买 nike

这是怎么回事?

helper.bat

@echo off
echo %1
call:foo %1
goto:eof

:foo
echo %1
goto:eof

像下面这样运行我们的脚本

helper “^^^^”

输出

“^^^^”

“^^^^^^^^”

为什么?我知道 '^' 符号在 cmd.exe 的情况下很特殊,但是这里发生了什么?函数调用对其有何影响?

最佳答案

CALL 在这种情况下非常特别!

批处理解析器有不同的阶段,在特殊字符阶段unquoted 插入符用于转义下一个字符,插入符本身被删除。
在您的情况下,插入符号被引用,因此它们不会受到影响。

然后插入符号可以在延迟扩展阶段再次受到影响,但引号在那里没有特殊意义,插入符号仅用于转义感叹号。

通常在延迟阶段之后,所有操作都已完成,但是如果您使用 CALL,所有插入符都会加倍
通常这是不可见的,因为 CALL 还会重新启动解析器,并且在特殊字符阶段再次删除插入符号。
但在您的情况下,它们被引用,因此它们保持加倍。

试试这个

call call call call echo a^^ "b^"

输出

a^ "b^^^^^^^^^^^^^^^^"

解析器在 How does the Windows Command Interpreter (CMD.EXE) parse scripts? 中有解释。

关于windows - bat 文件、函数和插入符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17701315/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com