Batch - Wie 2 Ausgaben auf eine Zeile in Datei?

OP #7429206
Lesenswert?

Hallo,

ich möchte die Fuses vom µC auslesen halbwegs formatiert in eine Datei schreiben. Funktionieren tut aktuell folgendes.

1
set /A TIMEOUT=2
2
set /A NUMBER=4
3
set PROGRAMMER=jtag2updi
4
set TARGET=m4809
5
set DATEI=NanoEveryTest.txt
6
@ echo off
7

8
mode COM%NUMBER%:1200,E,8,1
9
timeout /T %TIMEOUT%
10
echo Fuse 0: wdtcfg: > %DATEI%
11
avrdude -c %PROGRAMMER% -P com%NUMBER% -p %TARGET% -b 115200 -U fuse0:r:-:b 1>> %DATEI%
12
timeout /T %TIMEOUT%
13
pause

Nur hätte ich gern beide Ausgaben

1
Fuse 0: wdtcfg: 
2
0b0

in einer Zeile.

1
Fuse 0: wdtcfg: 0b0

Ist das möglich? Wie?

OP #7429328
Lesenswert?

Hallo,

in Variablen schreiben schien am Einfachsten, nur wie bekomme ich die Ausgabe von avrdude in die Variable?

1
set /A TIMEOUT=2
2
set /A NUMBER=4
3
set PROGRAMMER=jtag2updi
4
set TARGET=m4809
5
set DATEI=NanoEveryTest.txt
6

7
@ echo off
8

9
mode COM%NUMBER%:1200,E,8,1
10
timeout /T %TIMEOUT%
11
set VAR1=Fuse 0: wdtcfg:
12
set VAR2=echo avrdude -c %PROGRAMMER% -P com%NUMBER% -p %TARGET% -b 115200 -U fuse0:r:-:b
13
echo %VAR1% %VAR2% > %DATEI%
14
timeout /T %TIMEOUT%
15
pause
OP #7429334
Lesenswert?

Hallo,

mit dem Tipp von Yalu bekomme ich das hin. Danke. Die Sache mit "in die Variable speichern" würde mich interessieren.

1
set /A TIMEOUT=2
2
set /A NUMBER=4
3
set PROGRAMMER=jtag2updi
4
set TARGET=m4809
5
set DATEI=NanoEveryTest.txt
6

7
@ echo off
8

9
mode COM%NUMBER%:1200,E,8,1
10
timeout /T %TIMEOUT%
11
echo|set /p=Fuse 0: wdtcfg: >%DATEI%
12
avrdude -c %PROGRAMMER% -P com%NUMBER% -p %TARGET% -b 115200 -U fuse0:r:-:b 1>> %DATEI%
13
timeout /T %TIMEOUT%
14

15
mode COM%NUMBER%:1200,E,8,1
16
timeout /T %TIMEOUT%
17
echo|set /p=Fuse 1: bodcfg: >>%DATEI%
18
avrdude -c %PROGRAMMER% -P com%NUMBER% -p %TARGET% -b 115200 -U fuse1:r:-:b 1>> %DATEI%
19
timeout /T %TIMEOUT%
20
pause
#7429337
Lesenswert?

Wenn du an eine Programmzeile ein 1>>datei oder 2>>datei dranhängst, wird deren Standardausgabe oder Fehler an die Datei angehängt. Was jetzt was ist weiß ich nicht, und hängt auch vom Programm ab. Musste testen. ;) Dein einfaches >> ohne 1 oder 2 ist ja auch die Standardausgabe, nur eben die vom echo

Und in die Variable gehts mit For. Das Konstrukt bekomme ich so auch nicht hin, aber for kann ein Programm ausführen und die Ergebnisses in eine Variable beamen. Kuckmal https://administrator.de/tutorial/tutorial-zur-for-schleife-155681.html#toc-17

#7429358
Lesenswert?

Ja, soweit mir bekannt geht es nur mit dem for. Linux ist da wohl was einfacher, aber WinDOS eben nicht so. Und es ist keine For-Schleife, da schleift nichts. ;) Es führt halt für jedes Argument die Befehle aus, und da du keinen Zähler, keine Liste mit Argumenten oder keine Datei mit einer Liste angibst, wird eben das angegebene Programm ausgeführt und das "Ergebnis"=die Ausgabe dessen in die Variablen gepackt. Mit DOS-for kann man schon ne Menge machen, aber ja, die Syntax ist ein Graus. Ist halt erweitertes DOS von vor 25 Jahren oder so.

Theoretisch gibt es die Variante, die Ausgabe des Programms in eine Datei zu schreiben und das dann wieder in eine Variable zu laden. Aber das funktioniert glaub ich nicht mit jedem CMD (irgendeine Option ist erforderlich) und es braucht eben temporäre Files.

#7429424
Lesenswert?

Veit D. schrieb:

Hallo,

Danke für die Erklärung. Dann lasse ich das erstmal sein. Dafür brauche ich eine gewisse Muse sonst wird das nichts. Ich behalte es im Hinterstübchen. :-)

Du könntest auch einfach die powershell verwenden. Dagegen kackt die bash ungefähr genauso ab, wie die klassischen cmd-Batches gegenüber der bash.

Tja, das Bessere war schon immer der Hauptfeind des Guten...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren