C'est ce que j'ai jusqu'ici
@echo off
for /f "tokens=2 delims==" %%d in ('wmic logicaldisk where "drivetype=3" get name format:value') do echo %%d
la sortie est correcte
@echo off
FORFILES /P C:\ /S /M *.* /C "cmd /c echo @path"
la sortie est correcte
@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"
la sortie semble signaler un lecteur non valide pour chaque lecteur du système, mais je ne peux pas le faire pour traiter le %% d comme C: \ D: \ etc,
Aucune suggestion
Réponses:
WMIC génère une sortie unicode et FOR / F convertit la sortie au format ANSI de manière incorrecte, de sorte qu'il existe un retour chariot supplémentaire (
<CR>
) à la fin de chaque ligne de sortie.Ainsi, votre lecteur devient
C:<CR>\
- le retour chariot perturbe la commande.Une façon d'éliminer le caractère indésirable consiste à ajouter une boucle FOR supplémentaire, qui en élimine exactement une
<CR>
à la fin de la ligne, si elle existe.De plus, à moins que Windows 8 ne soit différent de toutes les versions précédentes, WMIC nécessite une barre oblique avant l'option FORMAT, comme dans
/format:value
la source
(for /f "delims=" %A in ('wmic ...') do @echo %A)>output.txt
, puis examiner le résultat en utilisant un éditeur hexadécimal. Vous verrez chaque ligne terminée par<CR><CR><LF>
, au lieu de celle attendue<CR><LF>
.