Thanks Jeb for answering this:
You can solve it with delayed expansion, because delayed expansion works different than percent expansion.
:START setlocal EnableDelayedExpansion @echo What folder do you want to process? (Provide a path without a closing backslash) set /p datapath= ::Is string empty? IF X!datapath! == X GOTO:START ::Does string have a trailing slash? if so remove it IF !datapath:~-1!==\ SET "datapath=!datapath:~0,-1!" echo !datapath!It expands later than the percent expansion, and after the delayed expansion no more parsing is done, so even spaces or special characters have any effect.
–jeroen
via: