DOS Shell SET-Kommando

Hallo,

ich versuche in der DOS-Shell eine Batch-Routine zu schreiben, in der die Bildschirm-Ausgabe eines anderen Kommandos interpretiert werden soll.

Wie kann ich nun in der DOS-Shell die Ausgabe des Kommandos in eine Variable schreiben?

SET WERT=[Kommando] (entsprechend zu z.B. einer linux bash) funktioniert nicht.

Alternativ wäre auch die Ausgabe in eine Datei umzuleiten und dessen Inhalt dann der Variable zuzuweisen:
SET WERT=[Inhalt der abc.txt]

Wie geht das? Ich komme aus der Linux-Bash-Programmierung und komme mit der doch etwas betagten DOS-Shell nicht ganz klar…

Vielen Dank im Voraus

Hallo hufelix,

ich versuche in der DOS-Shell eine Batch-Routine zu schreiben,
in der die Bildschirm-Ausgabe eines anderen Kommandos
interpretiert werden soll.
Wie kann ich nun in der DOS-Shell die Ausgabe des Kommandos in
eine Variable schreiben?
Alternativ wäre auch die Ausgabe in eine Datei umzuleiten

Ohne jetzt einen konkreten Lösungsvorschlag zu haben, würde ich denken, dass der einzig mögliche Weg wäre, temporär ein zweites Batchfile zu erzeugen und das dann aufzurufen. Einige Beispiele dazu finden sich hier:
http://www.ericphelps.com/batch/secondry/index.htm
Überhaupt ist dieser Link meiner Meinung nach eine Schatzgrube für alle geplagten DOS-Shell-Programmierer
http://www.ericphelps.com/batch/index.htm
Wenn es so doch nicht geht, kannst Du es vielleicht mit Windows Scripting versuchen
http://www.ericphelps.com/scripting/index.htm
Eine andere Möglichkeit wäre die Verwendung von 4DOS, das hat einen wesentlich grösseren Befehlsumfang als das normale MS-DOS.
http://wisspro.de/RZ/software/4DosDoku/

Viel Erfolg
Klaus Bernstein

hi

prog.exe > output.txt

for /F „tokens=*“ %%i in (output.txt) do @echo %%i

sowas in etwa?

ist zwar microsoft-typisch, den for-befehl zum auslesen von dateien zu verwenden (du beendest ja auch windows über den start-button), aber es klappt.

auch ein nettes neues feature seit windows xp:

set /P input=bitte namen eingeben:

echo %input%

und ja, das mit den prozent ist verwirrend und nicht einheitlich beim for-befehl müssen es doppelte prozent sein, sonst prozent-variable-prozent, auf der eigabeaufforderung direkt ist es wieder anders - so wirklich hat sich microsoft nichts dabei überlegt bzw. zu sehr auf abwärtskompatibilität geachtet.

lg
erwin

Hallo Hufelix!

Erwin war mit seiner Antwort schon recht nah dran:
for /F „usebackq tokens=1,2,3“ %%a IN ( kommando.exe ) do echo %%a / %%b / %%c
Gib einfach mal „help for“ in der Kommandozeile ein und Du findet die Beschreibung zu den Optionen, die Du zwischen den Anführungszeichen verwenden darfst (eol,skip,delims,tokens und usebackq). „usebackq“ ist dafür verantwortlich, dass man (ähnlich wie bei UNIX/linux) ein Kommando in Backquotes >`

Vielen Dank!

for /F „usebackq tokens=1,2,3“ %%a IN ( kommando.exe ) do
echo %%a / %%b / %%c

Das hat mir weitergeholfen. Wäre nie auf eine FOR-Schleife gekommen…