dir está percorrendo a árvore no diretório, mas apenas classificando as entradas nos diretórios folha. Isso é um problema porque é um sistema de arquivos FAT. Em um sistema de arquivos FAT, as entradas em qualquer diretório determinado não são classificadas, fazendo com que o tree-walk não seja classificado. Os diretórios NTFS, por outro lado, são sempre classificados.
Você tem algumas soluções. O mais fácil seria canalizar a saída através de sort :
dir /b/s | sort
(Se você estiver usando sort para fazer a encomenda, não há necessidade da opção /on para dir .)
Sua outra alternativa seria usar um ls no estilo Unix, o que certamente faria isso direito. Exemplos seriam o ls em Cygwin ou no meu próprio Hamilton C shell .