Entiendo que el orden que necesitas es el "numérico", es decir el que asumiría que lo que precede al guión es un número y que debe ordenarse según ese subcampo. Yo tampoco consigo ninguna opción de DIR que haga esa ordenación. Se me ocurre que se podrían renombrar previamente para que se iguale el número de cifras de esa parte numérica con ceros a la izquierda. Si quieres mantener el nombre original después de hacer lo que quieras (por ejemplo "moverlos a otra carpeta de manera ordenada" aunque no acabo de entender para que puede servir eso) los vuelves a renombrar. Esto podría servirte:
@echo off
Setlocal EnableDelayedExpansion
cd \Carpeta prueba
for /f "tokens=1,2* delims=-" %%a in ('dir /b /on *.txt') do (if %%a lss 10 ren %%a-%%b 0%%a-%%b)
dir /b /on *.txt
pause
for /f "tokens=1,2* delims=-" %%a in ('dir /b /on *.txt') do (
set /a num=%%a
if %%a lss 10 ren %%a-%%b !num!-%%b
)
dir /b /on *.txt
Donde dice "Carpeta prueba" deberías poner el nombre de la carpeta que contiene los archivos. El renombrado de ese ejemplo solo prevé números menores que 100, es decir que renombra de 0... 9 a 00... 09. Si hubiera que contemplar valores menores que 1000 habría que retocar los IF de los DO para contemplar 0... 9 a 000... 009 y 10... 99 a 010... 099 ( y así sucesivamente). He incluido dos DIR después de cada renombrado para ver el efecto. Donde está el PAUSE debería figurar la acción que quieres para cada archivo (el movimiento ordenado) aunque tendrías que incluirlo en el bucle DO de un FOR similar (sin TOKENS ni DELIMS).
Ya me dirás que te parece esta solución y si te sirve o no.