Move, copy, rename, concatenate, delete, sort, compare, and so on files with spaces in the file names using a CLI and the doing the same sorts of things using a .bat file or shell script (sh, csh, bash, etc.).
Leaving Windows (ref: your mention of .bat files) aside (and what else is one to do with Windows?), when writing Unix/Linux shell scripts in an eh-derived shells (and, leaving csh and csh-derived shells aside - and, seriously, what else is one to do with csh/tcsh as a scripting language?), you are usual entirely OK as long as you quote every variable reference. That is, you just get in the habit of never writing:
and always writing:
As long as you do that, you should be OK, as long as these two things don't happen:
1) Files with newlines in them. This is truly deranged and you can put me down on the list of people who think that spaces in filenames are OK nowadays, but newline is truly sick. Against this, for all I know, quoting does make files-with-newlines work OK; I've never had occasion to test this in my work.
2) Scripts/functions that call other scripts/functions passing parameters on. This has caught me in the past, where you essentially have to "double-quote" things in order to protect them against both the current shell and the sub-shell. This can, obviously, get ugly if you have to support infinite levels of sub-shell-ing.
And some folks need to stop being fanboys and see the forest behind the trees.
(One of the best lines I've seen on this board lately)