为什么在cmd中输入一个“^”会问我更多的问题?那就什么都不要做
我试着用谷歌搜索这个并搜索堆栈溢出,但它没有返回任何有用的结果为什么在cmd中输入一个“^”会问我更多的问题?那就什么都不要做,cmd,windows-10,command,special-characters,Cmd,Windows 10,Command,Special Characters,我试着用谷歌搜索这个并搜索堆栈溢出,但它没有返回任何有用的结果 ^symbol的作用是什么?为什么要求我更多? 还有什么?更多信息?更具体?还要烤鸭吗 一次输入^加上按输入键返回 的两个独立行问题 更多信息? 更多信息? 为什么是两个? 输入双精度^^时返回, “^”未被识别为内部或外部命令 为什么它也只返回一克拉 在第一种情况下,单个克拉返回一个非空或未定义的值 而第二个可能是未定义的 非常简短的问题。 我的问题可能是这个问题的重复: 但是仍然对屏幕截图中最后一个命令的输出感到困惑。插入符
^symbol的作用是什么?为什么要求我更多?
还有什么?更多信息?更具体?还要烤鸭吗 一次输入
^
加上按输入键返回的两个独立行问题
更多信息?
更多信息?
为什么是两个?输入双精度
^^
时返回,“^”未被识别为内部或外部命令
为什么它也只返回一克拉 在第一种情况下,单个克拉返回一个非空或未定义的值
而第二个可能是未定义的 非常简短的问题。
我的问题可能是这个问题的重复:
但是仍然对屏幕截图中最后一个命令的输出感到困惑。插入符号的第一个(
^
)是cmd的转义字符,当用作行上的最后一个字符时,它会删除行的结尾并追加下一行并转义第一个字符
第二,与流行的观点相反,您可以将多行命令写入cmd提示符,通常是通过将命令包装在括号中来完成。
例如:
c:\>@(
更多?echo,你好
更多?回声,在那里
更多?)
---[输出]---
你好
那里
另一种方法是使用行末尾的插入符号
当第1行的最后一个字符是插入符号时,这意味着行尾未被处理(从技术上讲,它与插入符号一起被删除),第2行的第一个字符将被转义
因此,在第二行,如果您只点击“回车”(回车),它将被转义,然后您将得到第二行more?
,因为该行现在也将被附加到第一行
然而,您只转义了第二个EOL,这意味着这是一种将回车保存到变量中的方法。但是,仅当启用了延迟扩展时,使用变量回显行才有效
因此,例如,在CLI上这样做很好:
c:\>echo.this^
更多那
---[结果]---
这个和那个
您还可以在CLI上使用此选项设置变量,而不必考虑回车问题
c:\>Set var=Some^
更多正文
c:\>echo%var%
---[结果]---
一些文本
如前所述,如果回显,^是行的最后一个字符,并且您在第一个more?
上按enter键,您仍然可以向行写入更多内容,并显示它,包括回车符。这项工作不会延迟扩展
c:\>echo.this^
更多
更多那
---[结果]---
这
那
但是,尽管您可以如上所述在CLI上保存变量,但在尝试echo
it时,将显示以下行为:
c:\>Set var=Some^
更多
更多正文
c:\>echo%var%
---[结果]---
一些
这是因为即使没有延迟扩展,以这种方式保存变量也可以工作,但是要通过EOL字符返回值,则需要启用延迟扩展
但是,我们可以看到,它是使用SET
c:\>Set var=Some^
更多
更多正文
c:\>设置变量
---[结果]---
var=一些
正文
因此,您仍然可以通过FOR
循环将其取出,或者您需要打开延迟扩展,这可以通过使用/V
选项启动CMD
来完成
因此,这个简单的for
循环将起作用,但仅当变量中存储的字符串中没有空格或逗号时
因此,这将起作用:
c:\Set var=此\u没有…空格^
更多
更多在它里面
c:\>对于(%var%)DO@(ECHO.%~A)中的%A
---[结果]---
这个没有…空格
在它里面
但这不会得到你想要的:
c:\>Set var=更多文本^
更多
更多去这里
c:\>对于(%var%)DO@(ECHO.%~A)中的%A
---[结果]---
一些
更多
文本
去
在这里
但是,如前所述,SET
确实显示回车符,因此您可以使用FOR/F
循环将两行取出:
c:\>Set var=更多文本^
更多
更多去这里
c:\>for/F“Tokens=*%A IN('SET VAR')DO@(ECHO.%~A)
---[结果]---
var=更多的文本
去这里
但是现在我们仍然在开头有var=
,所以我们真的不希望这样,这意味着我们需要在变量的开头有一个额外的回车,并跳过第1行,得到如下结果:
c:\>设置变量=^
更多
更多这里有一些文字^
更多
更多也在这里
c:\>for/F“Tokens=*SKIP=1”%A IN('SET VAR')DO@(ECHO.%~A)
---[结果]---
这里有一些文字
也在这里
因此,实现这一点的最简单方法是启用延迟扩展,并像通常那样使用echo:
c:\>Set var=Some^
更多
更多正文
c:\>cmd/V
c:\>回声!瓦尔!
---[结果]---
一些
正文
这是否回答了您的问题?