Warum ist die FOR /f-Schleife, die in diesem batch-Skript die Auswertung eine leere Zeile?

Bin ich zu schreiben versucht, eine batch-Skript, erhält (unter anderem) eine Liste aller Laufwerke des Computers hat. Der basic-code sieht wie folgt aus:

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:\\|"
)

Ich ziemlich offensichtlich bauen Sie zwei Listen mit verschiedenen Formaten für die spätere Verwendung. Wenn ich diesen Befehl ausgeführt, aber die Ausgabe die ich bekomme sieht ungefähr so aus:

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

Nun, ich erwarte, dass die Hinterkante Rohr-in beiden Fällen-und ich kann das schaffen, aber ich bin wirklich verwirrt, warum gibt es einen extra Eintrag in es. Wenn ich das wmic Befehl manuell kann ich sehen, dass es tatsächlich eine leere Zeile am Ende der Ausgabe, aber mein Verständnis ist, dass /f wurde speziell soll, um leere Zeilen zu ignorieren.

Wenn ich wieder ECHO an, wie es aussieht, die Letzte Zeile ist gerade in so einem carriage return/newline oder ähnliches. Gibt es eine Möglichkeit, das zu tun, was ich erwarte? Bin ich etwas fehlt? Ich habe versucht zu schreiben, eine if Bedingung in der Schleife, um auszuschließen, dass diese Letzte Zeile, aber es war... funky und nie gearbeitet. Ich freue mich über jede/alle helfen.

InformationsquelleAutor Morinar | 2011-11-04
Schreibe einen Kommentar