如果在命令行中执行:
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值赋值错误。我做错了什么?
答案 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