slickwilly2000
Goto Top

DOS-Batch: Umleitung in 2 Dateien

Hallo,

vielleicht ist die Antwort auch zu einfach, aber ich komme leider nicht dahinter.


Für das Umleiten der Programmausgabe gibt es ja den Umleitungsoperator (> bzw. >>).


Wie kann man eine Ausgabe in 2 Dateien gleichzeitig schreiben?

Bisher habe ich das sehr unsauber gelöst:


dir > temp.txt
type temp.txt >> datei1.txt
type temp.txt >> datei2.txt
del temp.txt

Ich würde gerne die Ausgabe von 'dir' direkt in zwei 2 Dateien schreiben bzw. anhängen (>>).


Vielen Dank im Voraus

slickwilly2000

Content-Key: 35013

Url: https://administrator.de/contentid/35013

Printed on: April 25, 2024 at 18:04 o'clock

Member: Biber
Biber Jun 28, 2006 at 12:01:41 (UTC)
Goto Top
Moin slickwilly2000,

geht mit Bordmitteln nicht.
Unter UNIX gibt es dafür ein "tee"-Utility, das gleichzeitig Streams in mehrere Kanäle schreiben kann - in M$'s Betriebssystemen nicht.

Es gibt zwar einige nach Windows migrierte tee-Varianten (tee.exe; mtee.exe), eine davon sogar von M$ höchstselbst, aber ich würde Dir davon abraten.

Wenn Du abwägen musst dazwischen, ob der Batch dann nur in heimischer Umgebung läuft (bei Dir/dort wo auch das tee.exe-Utility vorhanden ist) oder aber überall, und dafür sind zwei redundante Zeilen drin...

..dann würde ich den zweiten Weg gehen.

Für den ersten Weg (tee-Utilities): ein paar habe ich mailbar hier, aber ausschließlich aus Jäger- und Sammlergründen.
Quellen dafür kennt Dr. Google besser als ich.

Gruß
Biber
Member: Biber
Biber Jun 28, 2006 at 18:22:19 (UTC)
Goto Top
...Ergänzung und Verdeutlichung:

Was ohne Hilfsutilities unter M$-Shells NICHT möglich ist, ist das synchrone zusätzliche Ausgeben in einen weiteren Ausgabekanal z.B.
- in Datei und Bildschirm
- oder Drucker und Datei gleichzeitig
- oder in 2 Dateien gleichzeitig,
so dass das "outputliefernde Programm" auch nur einmal laufen muss.

Denn das sollte ja das Ziel sein... im obigen Beispiel soll ja auch der DIR-Befehl nur 1x rumrödeln und nicht 2x hintereinander.

Das - wie geschrieben - geht nicht anders.

Was anders ginge: den mehrfachen Aufruf nacheinander... den kann man/frau lesbarer gestalten.
REM Original: [DIR-Befehl wird nur einmal aufgerufen]
::
dir > temp.txt
type temp.txt >> datei1.txt
type temp.txt >> datei2.txt
del temp.txt

:: Variante: [DIR-Befehl wird auch nur einmal aufgerufen]
::
dir > temp.txt
for %%i In (datei3.txt datei4.txt) do type temp.txt >>%%i
::... oder, kürzer und schlechter lesbar, so:
for %%i In (5 6) do type temp.txt >>datei%%i.txt
del temp.txt


:: Unsinnige Variante: [DIR-Befehl wird mehrmals aufgerufen]
::
for %%i In (datei7.txt datei8.txt) do dir >>%%i
::... oder, kürzer und schlechter lesbar, so:
for %%i In (9 10) do dir>>datei%%i.txt
::-keine Zwischendatei, kein DEL nötig

Ist aber alles nur kosmetisch... eine echte Verbesserung gibt es ohne Utilities nicht.

Biber

P.S. @slickwilly2000:
Aber dass Du das unbefriedigend findest, ist ein gutes Zeichen. So beginnen IT-Karrieren....
Member: slickwilly2000
slickwilly2000 Jun 29, 2006 at 18:22:58 (UTC)
Goto Top
Vielen Dank für deine Antwort(en).

Ich werde es jetzt vermutlich so lassen. Ein zweimaliges ausführen kommt definitiv nicht in Frage, weil in Wirklichkeit nicht 'dir' zum Einsatz kommt, sondern ein Utility, welchen den freien Speicherplatz unserer gesamten Serverarchitektur über Netzwerk abfragt.

Und das dauert ca. an die 3 Minuten. Der Zweck heiligt die Mittel face-wink

Aber dass Du das unbefriedigend findest, ist ein gutes Zeichen. So beginnen IT-Karrieren....

Das ehrt mich aber face-wink


Mfg
slickwilly2000