){如果此时出乎意料的话

时间:2015-04-09 08:38:48

标签: batch-file

我正面临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%
)

1 个答案:

答案 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 (...)块)的一部分。

相关问题