Você não precisa das aspas duplas (externas) com usebackq
.
Você pode obter a lista de diretórios de seus comandos canalizados, mas quando a saída tiver espaços, somente a primeira parte irá para a variável %%d
. Para evitar isso, use um parâmetro tokens=*
adicional (de for /?
):
for /f "usebackq tokens=*" %%d in ('dir "C:\Program Files" /ad /b /s ^| sort /R') do echo "%%d"