Batch file 如何将环境变量的值写入文本文件?
我需要将分配给环境变量Batch file 如何将环境变量的值写入文本文件?,batch-file,variables,Batch File,Variables,我需要将分配给环境变量finalval的十进制值写入文本文件,如下所示: echo.%%finalval>>^C:\TempSetup\id.txt 问题是执行后,当我检查文件内容时,finalval的实际值没有写入文件,而是写入了%finalval% 在以前使用相同样式的echo命令的同一批处理文件时,我没有遇到任何问题 我在第一行以及我用来写入文件的循环中启用了延迟扩展 我做错了什么?有一种方法似乎很少使用,但当您确定您的echo字符串不是以可转义字符开头时,该方法效果良好。方
finalval
的十进制值写入文本文件,如下所示:
echo.%%finalval>>^C:\TempSetup\id.txt
问题是执行后,当我检查文件内容时,finalval
的实际值没有写入文件,而是写入了%finalval%
在以前使用相同样式的
echo
命令的同一批处理文件时,我没有遇到任何问题
我在第一行以及我用来写入文件的循环中启用了延迟扩展
我做错了什么?有一种方法似乎很少使用,但当您确定您的
echo
字符串不是以可转义字符开头时,该方法效果良好。方法是使用标准转义字符转义(插入符号,^
):
@对于%%A,在(0 1 2 3.0 4.1 5.2 10 21 32字符串0“字符串1”“0 1 2”)中执行@Echo(^%%A>>
我在上面的代码中使用了CON
重定向到控制台设备,您可以在测试后将其更改为特定任务的文件
输出应如下所示:
0
1.
2.
3
4.1
5.2
10
21
32
String0
字符串1
0 1 2
根据jeb的评论,我想澄清一下,这个想法可以更简单地通过以下方式表达:
@Echo(^%%finalval>>“C:\TempSetup\id.txt”
其中,
%%finalval
用于表示(应替换为)包含“decimal”值的报告变量。如果您以后不在脚本中展开变量,则不需要启用DelayedExpansion。如果您之前已经设置了“finalval”:
以下是您稍后的称呼:
echo.%finalval% >>C:\TempSetup\id.txt
注意:当您将输出重定向到“id.txt”时,单克拉>将创建该文件。双克拉>>将附加该文件。这意味着,如果您继续运行脚本,并且您希望“id.txt”中有一个“X”值,因为您使用的是双克拉,您的输出将反映“X”与您运行脚本的次数相同。这是否回答了您的问题?此任务的正确行是:
>“C:\TempSetup\id.txt”echo(%finalval%
重定向首先放在命令行上,以便能够输出诸如1
、2
等值。有关详细说明,请参阅我在commandecho
之间圆括号中的回答,如果变量final,则输出值可以在文件中写入空行val
根本没有定义,而是将回显状态写入文件。只有当环境变量finalval
包含一个字符串时,才需要延迟环境变量扩展,该字符串可能包含对Windows命令处理器cmd.exe
处理批处理文件有特殊意义的字符在这种情况下,确实有必要将其启用并与echo(!finalval!>>“C:\TempSetup\id.txt”一起使用
。延迟扩展可以安全地附加重定向。@Mofi非常感谢您的帮助,非常感谢您的帮助。它可以正常工作,……但它也可以在没有插入符号的情况下正常工作,因为%%~A
在重定向已被解析时会被扩展。我想您是想展示类似echo Helllo^2>con
的功能(显示“你好2”)是的@jeb,但我想让答案尽可能的通用,因为OP没有提供任何细节,只提供了一个看起来“可能”是do
输出的片段。我只是想OP会理解%%~a
仅仅是他们%%finalval
的一个表示,其余部分在技术上是irr与他们的具体问题相关。解释此解决方案echo
es
,而不是
,可能是明智的。
echo.%finalval% >>C:\TempSetup\id.txt