Prosty, naiwny sposób, który jest powolny, ponieważ wielokrotnie otwiera i ustawia wskaźnik pliku na koniec pliku.
@echo off
command1 >output.txt
command2 >>output.txt
...
commandN >>output.txt
Lepszy sposób - łatwiejszy do napisania i szybszy, ponieważ plik jest otwierany i pozycjonowany tylko raz.
@echo off
>output.txt (
command1
command2
...
commandN
)
Kolejny dobry i szybki sposób, który otwiera i pozycjonuje plik tylko raz
@echo off
call :sub >output.txt
exit /b
:sub
command1
command2
...
commandN
Edytuj 2020-04-17
Od czasu do czasu możesz chcieć wielokrotnie pisać do dwóch lub więcej plików. Możesz także chcieć wyświetlać różne komunikaty na ekranie. Nadal można to zrobić efektywnie, przekierowując do niezdefiniowanych uchwytów poza blokiem lub podprogramem umieszczonym w nawiasach, a następnie używać &
notacji do odwoływania się do już otwartych plików.
call :sub 9>File1.txt 8>File2.txt
exit /b
:sub
echo Screen message 1
>&9 File 1 message 1
>&8 File 2 message 1
echo Screen message 2
>&9 File 1 message 2
>&8 File 2 message 2
exit /b
Zdecydowałem się użyć uchwytów 9 i 8 w odwrotnej kolejności, ponieważ w ten sposób bardziej prawdopodobne jest uniknięcie potencjalnego trwałego przekierowania z powodu błędu projektowego implementacji przekierowania firmy Microsoft podczas wykonywania wielu przekierowań dla tego samego polecenia. Jest to mało prawdopodobne, ale nawet takie podejście może ujawnić błąd, jeśli spróbujesz wystarczająco mocno. Jeśli przygotujesz przekierowanie, na pewno unikniesz problemu.
3>File1.txt ( 4>File2.txt call :sub)
exit /b
:sub
etc.
%~f0
zawsze podaje pełną ścieżkę do skryptu wsadowego, nawet jeśli znajduje się w podprocedurze CALLed:.>output.txt 2>&1
cmd /?
lubhelp cmd
z wiersza poleceń konsoli w celu uzyskania dokumentacji. Sztuczka trzeciej metody polega na tym, że przekierowanie w CALL dotyczy wszystkich poleceń w podprogramie CALLed.jeśli chcesz przekierować strumienie out i err
źródło
>>
doda doa.txt
. Abya.txt
zamiast tego nadpisać , użyj>
. stackoverflow.com/q/4458231/1098302Wiem, że to starszy post, ale ktoś natknie się na niego w wyszukiwarce Google i wygląda na to, że niektóre pytania, które OP zadał w komentarzach, nie zostały szczegółowo omówione. Ponadto, proszę, bądź dla mnie łagodny, ponieważ jest to moja pierwsza odpowiedź opublikowana w SO. :)
Aby przekierować dane wyjściowe do pliku przy użyciu dynamicznie generowanej nazwy pliku, moje podejście do (czytaj: szybkie i brudne) jest drugim rozwiązaniem oferowanym przez @dbenham. Na przykład to:
Utworzy plik podobny do tego, który widzisz na tym zrzucie ekranu pliku w katalogu docelowym
To będzie zawierać następujące dane wyjściowe:
Pamiętaj również, że to rozwiązanie jest zależne od lokalizacji, więc uważaj, jak i kiedy go używasz.
źródło
lub
powinien wypełnić rachunek.
Jeśli chcesz uzyskać
APPEND
dane wyjściowe, użyj>>
zamiast>
.>
uruchomi nowy plik dziennika.źródło
źródło
Jest fajny mały program, którego możesz użyć do przekierowania wyjścia do pliku i konsoli
Pokaż fragment kodu
źródło
Dodaj te dwie linie w górnej części pliku wsadowego, wszystkie stdout i stderr po zostaną przekierowane do log.txt:
źródło
Użyłem powyższego polecenia w moim pliku wsadowym i działa. W pliku dziennika pokazuje wyniki mojego polecenia.
źródło
Może to się nie powieść w przypadku „toksycznych” znaków na wejściu. Rozważenie takich danych wejściowych, jak this IsAnIn ^^^^, jest dobrym sposobem, aby zrozumieć, co się dzieje. Jasne, że istnieje zasada, że ciąg wejściowy MUSI znajdować się w podwójnych cudzysłowach, ale mam wrażenie, że ta reguła jest prawidłowa tylko wtedy, gdy znaczenie wejścia jest lokalizacją na partycji NTFS (może jest to reguła dla adresów URL I nie jestem pewien). Ale oczywiście nie jest to regułą dla dowolnego ciągu wejściowego (jest to „dobra praktyka”, ale nie można na to liczyć).
źródło
Dodanie następujących wierszy u dołu pliku wsadowego spowoduje pobranie wszystkiego tak, jak jest wyświetlane w oknie CMD i wyeksportowanie do pliku tekstowego:
Zasadniczo wykonuje zaznaczenie wszystkiego -> skopiuj do schowka -> wklej do pliku tekstowego .
źródło