Fuel cells are generally more efficient than batteries, but you are unlikely to get a pocket fuel cell of the most efficient type as they do not reach peak efficiency until the temperature reaches 600 deg C or so. Other problems include storage of the hydrogen, where you have three options:
1) store as a gas. this leaks, ignites if the container gets too hot, and you need a lot of volume.
2) store as a liquid. This will explode on contact with air, requires cryogenic temperatures, and high pressures, which makes that tank heavy.
3)Store dissolved in a solid. this is probably the best option, and is the option used by the prototype hydrogen cars. However, while the hydrogen partial pressure is very low, making it less explosive than most hydrocarbon fuels, and the concentration of dissolved hydrogen is very high, meaning that the fuel tank can be small, the only two options are dissolved in a metal, which is very heavy, or dissolved in carbon nanotubes which are expensive.
When you add the fact that we do not currently have a system for the distribution of hydrogen, you are much better off with a Li-ion or Li-poly battery pack of the same size