Pourquoi le FOR /f en boucle en ce script de commandes de l'évaluation d'une ligne vide?

Je suis en train d'écrire un script batch qui obtient (entre autres choses) une liste de tous les disques durs de l'ordinateur. Le code de base ressemble à quelque chose comme ceci:

REM Build the list of disk drives to monitor
SETLOCAL enabledelayedexpansion
FOR /f "skip=1 tokens=1 delims=:" %%a in ('"WMIC logicaldisk WHERE drivetype=3 GET deviceid"') do (
    SET "DISK_DATABASES=!DISK_DATABASES!%%a|"
    SET "DRIVES_TO_MONITOR=!DRIVES_TO_MONITOR!%%a:\\|"
)

J'ai assez de toute évidence la construction de deux listes légèrement différents formats pour une utilisation ultérieure. Lorsque je l'exécute, cependant, la sortie j'obtiens ressemble à quelque chose comme ceci:

C|D|E||
C:\\|D:\\|E:\\|:\\|

Maintenant, j'attends la fuite pipe dans les deux cas, et je peux gérer ça, mais je suis vraiment confus pourquoi il y a un extra vierge d'entrée. Si je lance le wmic commande manuellement, je peux voir qu'il y a en effet une ligne vide à la fin de la sortie, mais ma compréhension est que /f était précisément censé ignorer les lignes vides.

Si je tourne ECHO, il semble que la dernière ligne est tout comme un retour chariot/saut de ligne ou similaire. Est-il un moyen de faire ce que j'attends? Ai-je raté quelque chose? J'ai essayé d'écrire un if condition dans la boucle d'exclure cette dernière ligne, mais c'était... funky et n'a jamais fonctionné. J'apprécie tous les/tous vous aider.

OriginalL'auteur Morinar | 2011-11-04