gpt4 book ai didi

batch-file - 将换行符附加到要编辑的 "echo"变量

转载 作者:行者123 更新时间:2023-12-05 03:30:33 31 4
gpt4 key购买 nike

在过去的 12 年里,我一直在 Linux 中工作,之前使用过 Windows 和命令行,并且最近不得不恢复那些批处理文件技能以获得一个易于使用/编辑的实用程序。但是,我在找出如何使用换行符构建字符串变量时遇到了一些问题(相当于 Linux 的 echo -e "Line1\nLine2")

基本上,我的实用程序会询问用户三个问题并检查输入的有效性。如果有效性失败,每个输入都有一个略有不同的“错误消息”。然后我检查 errMsg 变量是否包含任何内容,如果包含,它会列出来自 3 次有效性检查的整理后的错误消息。除了错误消息在一行之外,这一切都完美无缺,我想将每个错误放在它自己的行上。然后我“仅仅”在字符串中添加换行符……这就是这个问题的症结所在。

我用过 this链接作为引用点并使用基本字符串,新行将按预期出现。但是,当我使用变量时,新行不会出现,我希望有人能向我解释原因。

我有以下代码片段

@echo off
setlocal enableextensions enabledelayedexpansion

set \n=^


set NL=^^^%\n%%\n%^%\n%%\n%

echo This does indeed put in a newline%NL%and this is the 2nd line
:: output follows:
::This does indeed put in a newline
::and this is the 2nd line

set var=Line1%NL%
set var=%var%Line2%NL%
:: output follows:
::Line1Line2

set errMsg=This would be the first custom error message%NL%
set errMsg=%errMsg%This would be the second custom error message%NL%
set errMsg=%errMsg%This would be the third custom error message%NL%
:: output follows
::This would be the first custom error messageThis would be the third custom error message

显然,此时我希望 Line1Line2 示例分为两行,然后最后一个示例将所有自定义错误消息分为三行(而实际上,它也缺少第二个/中间的错误消息)

任何人都可以向我解释为什么这没有按预期工作吗?我想知道它是否与延迟扩展有关(我相信我需要:这个片段是一个更长的文件的一部分,它确实需要延迟扩展)。有没有更好的(或仅仅是替代的)方法来完成我正在寻找的东西?!

最佳答案

创建一个新的行变量是一个好的开始。但是你应该以不同的方式使用它。
百分比扩展不能很好地处理变量中的换行符,可以做到,但它非常复杂。

但是延迟扩展完美地适用于任何角色

@echo off
setlocal EnableDelayedExpansion

(set \n=^
%=empty line=%
)

echo Line1!\n!Line2

set "multiline_var=First Line!\n!Second Line"

echo !multiline_var!

关于batch-file - 将换行符附加到要编辑的 "echo"变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70808216/

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