Inilah yang saya miliki sejauh ini
@echo off
for /f "tokens=2 delims==" %%d in ('wmic logicaldisk where "drivetype=3" get name format:value') do echo %%d
output benar
@echo off
FORFILES /P C:\ /S /M *.* /C "cmd /c echo @path"
output benar
@echo off
for /f "tokens=2 delims==" %%d in ('wmic logicaldisk where "drivetype=3" get name format:value') do FORFILES /P %%d\ /S /M *.* /C "cmd /c echo @path"
output tampaknya melaporkan drive yang tidak valid untuk setiap drive pada sistem tetapi saya tidak bisa mendapatkannya untuk memproses %% d sebagai C: \ D: \ etc,
ada saran
Jawaban:
WMIC menghasilkan output unicode, dan FOR / F mengubah output ke ANSI secara tidak benar sehingga ada carriage return tambahan (
<CR>
) di akhir setiap baris output.Jadi drive Anda menjadi
C:<CR>\
- carriage return mengacaukan perintah.Salah satu cara untuk menghilangkan karakter yang tidak diinginkan adalah dengan menambahkan loop FOR, yang memotong tepat satu trailing
<CR>
dari ujung baris, jika ada.Selain itu, kecuali Windows 8 berbeda dari semua versi sebelumnya, WMIC memerlukan garis miring sebelum opsi FORMAT, seperti pada
/format:value
sumber
(for /f "delims=" %A in ('wmic ...') do @echo %A)>output.txt
, dan kemudian memeriksa hasilnya menggunakan hex editor. Anda akan melihat setiap baris diakhiri oleh<CR><CR><LF>
, alih-alih yang diharapkan<CR><LF>
.