The problem is you aren't doing another finditem after you ignore the item to find another one.
finditem %item_list c_ #BACKPACKID
while #FINDCNT > 0
{
finditem %item_list c_ #BACKPACKID
exevent drag #FINDID
wait 10
exevent dropc %dropbag
wait 10
ignoreitem #FINDID 4
}
Personally i would be using a repeat though to skip that initial finditem before you enter the while.
Repeat
Finditem %item_list C_ , #Backpackid
if #Findcnt > 0
{
exevent drag #FINDID
wait 10
exevent dropc %dropbag
wait 10
ignoreitem #FINDID 4
}
Until #Findcnt <= 0