WMIC produz saída unicode, e FOR / F converte a saída para ANSI indevidamente, de modo que haja um retorno de carro extra ( <CR>
) no final de cada linha de saída.
Portanto, sua unidade se torna C:<CR>\
- o retorno de carro está atrapalhando o comando.
Uma maneira de eliminar o caracter indesejado é adicionar um loop FOR extra, que apara exatamente um <CR>
do final de uma linha, se existir.
Além disso, a menos que o Windows 8 seja diferente de todas as versões anteriores, o WMIC requer uma barra antes da opção FORMAT, como em /format:value
@echo off
for /f "tokens=2 delims==" %%A in (
'wmic logicaldisk where "drivetype=3" get name /format:value'
) do for %%B in (%%A) do forfiles /p %%B\ /s /m *.* /c "cmd /c echo @path"