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?

MikiBelavista
źródło
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
Greg W
źródło
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.

Ciaran McKenzie
źródło
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
   [..]
mvw
źródło
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