Batch file ){如果此时发生意外的话

Batch file ){如果此时发生意外的话,batch-file,Batch File,我面临IF条件的编译问题,而同一位置的其他一些脚本使用相同的条件工作正常。其他脚本还检查代码中是否存在发布文件夹,它不会执行某些操作。知道为什么当我从同一位置调用时,相同的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条件的编译问题,而同一位置的其他一些脚本使用相同的条件工作正常。其他脚本还检查代码中是否存在发布文件夹,它不会执行某些操作。知道为什么当我从同一位置调用时,相同的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%
)
您需要更改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语句中的括号将不会作为批处理插入代码块的一部分进行求值。如果不存在,则它所在的发布…块。

我已经尝试了该更改,但putting没有提供所需的输出。它返回值0作为输出。抱歉,我对awk语法知之甚少。可能是您的sum变量当它应该是浮点数时,强制转换为字符串或整数?您可能会更幸运地将一个新问题标记为awk。您也可以尝试将您的awk参数放入.awk文件并尝试awk-f scriptfile.awk,只是为了排除特定于命令行的问题的可能性。顺便问一下,strtonum在做什么?您的第二个问题是什么awk语句无法知道第一个awk的输出经过strtonum。