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