Batch Befehl Ausgabe in Variablen schreiben?
Ich möchte die Ausgabe von dem Befehl ipconfig als variable haben Quellcode:
@echo off
for /f "tokens=*" %%a in ('ipconfig') do set ausgabe=%%a
echo %ausgabe%
Dich ich kriege da der Befehl ipconfig eine mehrzeilige Ausgabe hat nur die letzte Zeile ausgegeben.
2 Antworten
Mit dem SETLOCAL-Befehl kannst du ermöglichen, eine Variable in einer FOR-Schleife mehrmals zu ändern. Um Zeilenumbrüche zu übernehmen, musst du sie extra mitschreiben lassen, unten z. B. über die LF-Variable. Die beiden Leerzeilen nach dem SET-Befehl sind dabei wichtig.
Setlocal EnableDelayedExpansion
set LF=^
FOR /F "delims=" %%A IN ('ipconfig') DO if "!Ausgabe!" == "" (set Ausgabe=%%A) ELSE (set Ausgabe=!Ausgabe!!LF!%%A)
echo.!Ausgabe!
Die IF-Unterscheidung verhindert, dass eine Leerzeile am Anfang von !Ausgabe! steht.
Du kannst !Ausgabe! nur als Zeichenfolge verwenden, sie ist syntaktisch unbrauchbar. Das bedeutet, du kannst auf diese Weise nicht mehrere Batchbefehle speichern und ausführen.
Mit set überschreibst du es jedes Mal. Du musst es anhängen.
...wobei dabei wohl die Zeilenumbrüche hin wären.
...gute Frage, es scheint, als ob ausgabe während der Schleife nicht aktualisiert werden kann...
Batch, was soll der Unfug?
Und wie hänge ich es hinten dran? Die zeilenumbrüche sind egal