如何将批处理命令的结果分配给变量

时间:2012-06-10 17:13:27

标签: batch-file

如果在命令行中执行:

c:\digitemp.exe -t0 -o%C -q  > res1.txt

res1.txt正确包含摄氏温度的数值(例如:24.23456)。但是如果在bat文件中执行相同的命令(例如:test.bat):

@ECHO OFF
ECHO Hola pootol!
ECHO.
c:\digitemp.exe -t0 -o%C -q  > res1.txt 
rem set pootol = < res1.txt
rem set pootol
ECHO Prem una tecla per sortir.
pause > null

res1.txt包含错误的Celsius值,我怀疑它与参数" -o%C "有关。正如你所看到的那样,rem变量assing导致pootol var在提到前被Celsius值赋值错误。我做错了什么?

2 个答案:

答案 0 :(得分:2)

您的案例中的问题是%符号,因为它在cmd-line和批处理文件中的评估方式不同。
在批处理文件中,你可以通过加倍来逃避它。

所以你的代码看起来像

c:\digitemp.exe -t0 -o%%C -q  > res1.txt

答案 1 :(得分:0)

批处理文件%用于表示变量。因此%C在批处理文件中被解释为变量并替换为其值。由于它没有值,因此将替换为空字符串。

使用插入符^字符来转义%,以便解释程序将%视为普通字符。

c:\digitemp.exe -t0 -o^%C -q  > res1.txt