It's really hard to say without seeing your flow and understanding your data. My first guess is that there is a join somewhere that is duplicating records unexpectedly - turning what should be a small, fast data-set into a large result that never seems to finish. You might not see this in design mode, because Tableau Prep will likely sample that resulting data, but when you run the flow in batch mode it takes forever as you describe above.
Would you be able to share a packaged flow? Even a screenshot of your flow might help narrow things down a bit.