我正面临IF条件的编译问题,而同一位置的其他一些脚本使用相同的条件工作正常。其他脚本还检查代码中是否存在Release文件夹,不是它会做一些操作。知道为什么同样的IF失败了,因为我在同一个地方打电话?
@echo OFF
cd ..
cd debug/bin/8209
if not exist Release (
set val2 ""
echo %val2%
echo start the script
readelf qcdsp28909.mbn -l | awk '{if (match($6,/0x/)){if ($1 == "LOAD" ) print strtonum($6)}}'| awk '{ sum+=$1} END {print sum/1024/1024}' > value.txt 2>&1
set /p size=<value.txt
echo %size%
for /f "tokens=1,2 delims=." %%a in ("%size%") do (
set first_part=%%a
set second_part=%%b
)
set second_part=%second_part:~0,1%
echo %second_part%
if defined second_part if %second_part% GEQ 5 (
set /a rounded=%first_part%+1
) else (
set /a rounded=%first_part%
)
echo %rounded%
set /a rounded= "%rounded% * 1024 * 1024"
echo %rounded%
call cmd /c exit /b %rounded%
set hex=%=exitcode%
set val2=%hex%
setx val2 %hex% /m
echo %val2%
)
答案 0 :(得分:0)
您需要更改awk
语句并使用双引号而不是单引号,然后使用单引号。
readelf qcdsp28909.mbn -l | awk "{if (match($6,/0x/)){if ($1 == 'LOAD' ) print strtonum($6)}}" | awk "{ sum+=$1} END {print sum/1024/1024}" > value.txt 2>&1
这样,awk
语句中的括号不会被评估为它所在的批处理括号代码块(if not exist Release (...)
块)的一部分。