Frage von halloichbins098, 34

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.

Antwort
von S1r1us13, 17

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.

Antwort
von PerfectMuffin, 20

Mit set überschreibst du es jedes Mal. Du musst es anhängen.

...wobei dabei wohl die Zeilenumbrüche hin wären.

Kommentar von halloichbins098 ,

Und wie hänge ich es hinten dran? Die zeilenumbrüche sind egal

Kommentar von PerfectMuffin ,

...gute Frage, es scheint, als ob ausgabe während der Schleife nicht aktualisiert werden kann...

Batch, was soll der Unfug?

Keine passende Antwort gefunden?

Fragen Sie die Community