2009-03-09 8 views
16

Ich muss eine Ausgabe eines Befehls in zwei Dateien umleiten say Datei1 und Datei2 Datei1 ist eine neue Datei und Datei2 ist bereits vorhandene Datei, wo ich die Ausgabe anhängen muss ich habe versucht,Wie man eine Ausgabe eines Befehls in zwei Dateien umleitet

Dies ist nicht die erwarteten Ergebnisse geben:

command > file1 > file2 
+0

Duplizieren: http://stackoverflow.com/questions/76700/whats-a-simple-method-to-dump-pipe-input-to-a-file-linux, http: // stackoverflow.com/questions/418896/how-to-redirect-output-to-a-file-and-stdout –

+0

Beide "Dupes" sind speziell Linux/bash. Diese Frage ist ein wenig nützlicher, da sie unabhängig vom Betriebssystem ist. Es ist besonders schön, alle Lösungen in einer einzigen Antwort zum Vergleich zu haben, froh, dass es nicht als dupe geschlossen wurde, und keine Mods haben es aufgeschnitten, weil es zu allgemein oder so ein Unsinn ist. –

Antwort

8

für Windows (cmd.exe):

command > file1 & type file1 >> file2 
+0

Dies funktioniert nicht, wenn "command" nicht schnell ausgeführt wird, der "type" -Teil wird erst danach ausgeführt (und an diesem Punkt könnte es auch eine Kopie sein). Sie könnten versuchen, "command" in einem anderen Fenster mit irgendeiner Form von "Start" auszuführen, aber dann wird der zweite Teil fehlschlagen, weil Windows-Batch-Dateien kein "Schwanz" -Äquivalent haben. Du wärst besser dran mit powershell für diesen Job - oder das neue Windows Bash Subsystem - oder installiere git und benutze es bash - oder lade tee.cmd von irgendwo runter (ich hatte mal eine Kopie von tee.cmd) Für Dos in den 80er Jahren) –

+0

Sie haben Recht, es könnte Kopie sein und das ist nicht optimal insgesamt - aber fehlende 'tee' ist es nicht möglich mit cmd.exe. "Tee" ist in Windows-Ports der GNU-Dienstprogramme, wie die, die mit Git für Windows oder Chef kommt, so ist es nicht unmöglich zu bekommen. Die Absicht der Antwort war, * etwas * zu schreiben, das dieses Verhalten in cmd.exe emuliert. Andere haben die Powershell-Variante geschrieben. – Tomalak

13

Sie sind eng, g für den Befehl tee.

$ echo existing >file2 
$ date | tee file1 >> file2 
$ cat file2 
existing 
Mon Mar 9 10:40:01 CET 2009 
$ cat file1 
Mon Mar 9 10:40:01 CET 2009 
$ 
2

Vorausgesetzt, dass Sie auf einem Linux-ähnlichen System, versuchen

command | tee file1 >> file2 

tee den Ausgangsstrom spaltet und sendet sie an zwei Zielen.

0

In Linux können Sie dies tun

command | tee file1 >> file2

3

In Powershell verwenden tee-object (oder dessen tee alias)

command | tee first-file | out-file second-file 

Kann auch auf eine Variable abschlagen (beispielsweise für die Weiterverarbeitung).

1

Dies wird mit dem folgenden Befehl möglich sein. Befehl | tee -a file1 file2