A razão para isto é que você precisa de um único% quando você está fazendo isso no prompt de comando e um %% duplo quando você está fazendo isso a partir de um arquivo de lote.
Exemplo de linha de comando:
FOR /F "tokens=1-4 delims=/ " %a in ('something cool') DO something else cool %a %b %c
Exemplo de arquivo em lote:
FOR /F "tokens=1-4 delims=/ " %%a in ('something cool') DO something else cool %%a %%b %%c