Jak zapisać wyjście ipconfig do pliku tekstowego, gdy `tee` nie jest dostępne w systemie Windows?


6

Chcę zapisać plik ipconfig / all w pliku tekstowym. Jestem w systemie Windows 10. Kiedy próbuję tego w cmd

ipconfig /all | tee file.txt

mam

'tee' is not recognized as an internal or external command,operable program or batch file.

Czym jest alternatywa dla systemu Windows tee?


8
Proponuję usunąć powershell jako tag w twoim pytaniu, tak ipconfig /all | tee file.txt jest poprawnym poleceniem PowerShell i działa dokładnie tak, jak tego oczekujesz. tee to alias dla Tee-Object.
davidmneedham

12
Na ile warto, tee nigdy nie jest potrzebne do zapisywania danych wyjściowych do pliku - tak po prostu widać wynik i zapisz go do pliku.
JPhi1618

Jeśli chcesz wyświetlać obraz i wyświetlać, istnieje wersja tee systemu Windows o nazwie wintee: code.google.com/archive/p/wintee
Dimblefeck

@Dimblefeck jest tak wiele implementacji tee dla Windows, jak tee gnuwin32, a okna mają również natywne w PowerShell
phuclv

Odpowiedzi:


50

Spróbuj przekierować. Zamiast | tee, posługiwać się > output.txt na przykład

ipconfig /all > output.txt

1
przekierowanie nie działa jak tee. Musisz wydrukować plik później jak ipconfig /all > output.txt & type output.txt, ale nadal nie będzie zachowywał się jak tee, który wychodzi natychmiast
phuclv

To pytanie jest oznaczone „cmd.exe”, a nie „PowerShell”. W cmd.exe nie ma odpowiednika dla tee. Istnieje jednak Tee-Object w PowerShell, który ma tee jako alias.
Greg W

tak, ale twoja odpowiedź nie odpowiada na to, czego chce OP , który jest umieszczanie wyników w stdout i pliku
phuclv

9
Tytuł pytania określa „JAK ZAPISAĆ WYJŚCIE IPCONFIG DO PLIKU TEKSTOWEGO, JEŚLI TEE NIE JEST DOSTĘPNE”. W tytule pytania ani w treści nie ma wzmianki o jednoczesnym wyświetlaniu treści na ekranie innym niż odniesienie do samego polecenia tee.
Greg W

18

ipconfig /all >>logfile.txt 2>>&1

The >>logfile.txt 2>>&1 przekieruje zarówno strumień wyjściowy, jak i strumień błędów do pliku o nazwie logfile.txt, który zostanie utworzony i zapisany w bieżącym katalogu. Jeśli istnieje istniejący plik log.txt w tym katalogu, będzie on dołączał dane wyjściowe na końcu.


1
Jesteś pewnie to użycie jest poprawne? Wygląda na nonsens i nie jest udokumentowany w Dokumentacja przekierowania systemu Windows i / o . 2>>&1 nie przyjmuje argumentu pliku. Dla PowerShell, ipconfig /all *>> logfile.txt pokażę ci dołącz wszystkie strumienie wyjściowe do pliku.
alexis

1
Miałeś na myśli ipconfig /all >> logfile.txt 2>&1 być może?
A C

Dziwię się, że mój błąd poszedł bez tego przez długi czas. Rzeczywiście byłem trochę zepsuty, ponieważ szybko sprawdziłem plik .bat, który miałem w sobie i zinterpretowałem go na pierwszy rzut oka. Zmodyfikowałem moją odpowiedź na poprawne użycie, przeprosiny!
Ciaran McKenzie

8

Jeśli instalujesz MSYS2 możesz użyć

$ ipconfig -all | tee file.txt

Zauważ to /all musi być napisane jako -all.

W moim przypadku dostaję:

$ head file.txt

Windows-IP-Konfiguration

   Hostname  . . . . . . . . . . . . : Death-Star
   [..]

4
Chociaż nie jest to zła odpowiedź, umieszczenie MSYS2 na ścieżce ma zaskakujące konsekwencje.
Joshua

1
@JimB: MSYS nie był świetny, więc GnuWin32 był dobrą alternatywą dla niego, ale MSYS2 był doskonały, o ile go wypróbowałem. Nie znam żadnego powodu, aby używać GnuWin32.
Mehrdad

1
@Mehrdad: Niektóre z tych rzeczy oczekują, że inne rzeczy dostarczone przez niego będą na początku ścieżki. Nie próbowałem katalogować wszystkich przypadków, ale w końcu odkryłeś, że masz dwa find polecenia, które robią różne rzeczy.
Joshua

2
brak potrzeby msys2. powershell -command "ipconfig /all | tee output.txt" będzie działać, jeśli jesteś w cmd
phuclv

1
@ LưuVĩnhPhúc stanowi odpowiedź na Twoją propozycję, jest zdecydowanie najlepszym rozwiązaniem!
user2531336
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.