batch-file - 设置包含多个值的变量,每个值都在新行上
问题描述
我有一个包含多个变量的批处理脚本,我想将这些变量的所有值添加到将在电子邮件正文中使用的新变量中。问题是我的所有值都写入一行,我希望每个变量都在自己的行上:
set EmailText=%var1% %var2% %var3% %var4%
EmailText 值都在一行上。我希望 var1、var2、var3 和 var4 的值都在自己的行上,这将加载到电子邮件应用程序中。
我尝试使用 ^ 字符,例如 %var1%^%var2% 但不起作用。
使用 echo 您可以使用 ^ 来执行此操作,但我不想回显它,我想将所有字符串(每个字符串都在自己的行)存储在电子邮件应用程序中使用的另一个变量中
谢谢
解决方案
您需要<LF>
在变量的定义中插入一个字符并使用延迟扩展显示其值:
@echo off
setlocal EnableDelayedExpansion
set "var1=One"
set "var2=Two"
set "var3=Three"
set "var4=Four"
set ^"EmailText=%var1%^
%var2%^
%var3%^
%var4%^"
echo !EmailText!
尽管可以删除定义中变量值之间的空行,但所需的语法是丑陋和尴尬的......
编辑:新版本满足评论中所述的新要求......
@echo off
setlocal EnableDelayedExpansion
for /F %%a in ('copy /Z "%~F0" NUL') do set "CR=%%a"
set "var1=One"
set "var2=Two"
REM set "var3=Three"
set "var4=Four"
set "EmailText="
for %%v in (var1 var2 var3 var4) do (
if defined %%v set ^"EmailText=!EmailText!!%%v!!CR!^
%Do not remove this line%
^"
)
echo !EmailText!
输出:
One
Two
Four
推荐阅读
- .net - 从 Getter 中调用属性 Setter 不会执行 Setter?
- php - 如何通过传入 ID 更改数组中的字段值
- git - 恢复 git 重置
- class - 如何定义一个类,其中某些边缘对于 OrientDB 中的所有分配记录都是强制性的?
- terraform - 无法再创建/销毁 Azure VM (OSProvisioningInternalError)
- javascript - 如何将数据从 Flask 传递到 Javascript?
- javascript - 如何在 JavaScript 中多次获得重复功能播放声音?
- xamarin.android - Xamarin.Android。访问条码扫描器
- kubernetes - 我们可以使用 kubectl 从命令行创建多个命名空间吗
- c++ - QNX 上的 std::mktime 返回 -1