Batch file ){如果此时发生意外的话
我面临IF条件的编译问题,而同一位置的其他一些脚本使用相同的条件工作正常。其他脚本还检查代码中是否存在发布文件夹,它不会执行某些操作。知道为什么当我从同一位置调用时,相同的IF会失败吗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
@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。