Символ крышки
^
является "специальным" для cmd. Так что его не стоит использовать в качестве разделителя, если вы планируете решать задачу на батниках.
Вообще вашу задачу можно решить так:
@echo off
set "str=hjh#jhjh#hkjh#khkjh##khkjh"
set "delim=#"
set "count=0"
:loop
call:finddelims
if defined str goto:loop
echo.%count%
goto:eof
:finddelims
for /f "tokens=1,* delims=%delim%" %%a in ("%str%") do (
echo.%%a
set /a "count+=1"
set "str=%%b"
)
Тут я выбрал разделителем символ #, строку задал в переменной str произвольную с разделителями.
Двойной разделитель считается как 1. Разделитель стоящий в конце строки не учитывается.