logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

CMD - Zapisywaniu wyników poleceń do pliku.

.:aspire:. 22 Lut 2014 11:42 23466 7
REKLAMA
  • #1 13331765
    .:aspire:.
    Poziom 23  
    Posty: 608
    Pomógł: 53
    Ocena: 61
    Witam. Chciałbym zapisywać wynik wykonywania programu konsolowego do pliku tekstowego.
    Ogólnie, wiem jakich komend użyć. Problem w tym, że zawsze się wynik zapisuje po tym jak program się wykona. Czyli wynik się buforuje, program się wykonuje następnie cały log się zapisuje.
    A ja chciałbym aby log zapisywał się "na żywo" bez buforowania tekstu (wyniku).
  • REKLAMA
  • Pomocny post
    #2 13335468
    mdmyt
    Poziom 13  
    Posty: 50
    Pomógł: 5
    Ocena: 2
    Witam.
    Składnia: polecenie_z_parametrami >scieżka dla pliku
    Przykład: ping elektroda.pl -t >D:\plik.txt
    Zapisze się wynik ping w pliku plik.txt na dysku D
  • REKLAMA
  • #3 13337164
    .:aspire:.
    Poziom 23  
    Posty: 608
    Pomógł: 53
    Ocena: 61
    Dziękuje za odpowiedź ale to polecenie znam. Problem w tym, że używam aplikacji która wykonuje się prze kilka minut. A zwykłe przekierowanie daje wynik dopiero po wykonaniu się tej aplikacji. Ja chciałbym podglądać log w pliku tekstowym w trakcie wykonywania programu.
    Czyli chodzi o to aby exe'k nie buforował wyników.
  • REKLAMA
  • #5 13355478
    .:aspire:.
    Poziom 23  
    Posty: 608
    Pomógł: 53
    Ocena: 61
    Niestety nie działa :(
  • #6 13370288
    phaxe
    Poziom 13  
    Posty: 113
    Pomógł: 3
    Ocena: 6
    .:aspire:. napisał:
    Niestety nie działa :(

    U mnie działa np. przy kopiowaniu plików:

    XCOPY "X:\katalog\*.*" "Y:\katalog\" /E /K /H /Y /D | tee D:\wynik.txt

    Wynik kopiowania idzie równocześnie na ekran i do pliku wynik.txt
  • #7 13370470
    marek003
    Poziom 40  
    Posty: 4607
    Pomógł: 801
    Ocena: 487
    O czym innym rozmawiacie.

    Ty mówisz o pojedynczym poleceniu a autor o aplikacji/programie konsolowym.

    Do autora
    Może warto przemyśleć (przypomnieć sobie) jak działa program w "trybie konsolowym".

    Jeżeli miałbyś to widzieć na bieżąco to trzeba zmienić (zedytować i poprawić) aplikację którą masz innymi słowy przy każdym "poleceniu wewnętrznym" twojej "aplikacji" byś musiał umieścić kod wyrzucający informację.
    Teraz pytanie: gdzie?

    Samo "txt" by było w tym przypadku za mało gdyż po każdej komendzie zwracającej informacje do pliku txt byś musiał zadbać o odświeżanie (ponowne otwarcie) tego pliku tekstowego.
    Ewentualnie pozostałoby obserwowanie okienka konsoli jeżeli wyniki zwracane by były na ekran.
  • REKLAMA
  • #8 16990232
    piotr_be
    Poziom 11  
    Posty: 47
    Ocena: 28
    Natrafiłem na ten wątek, mając podobny problem, tym razem z brakiem przekierowania do pliku tekstowego wszystkiego z ekranu. Piszę tutaj, żeby nie zaśmiecać niepotrzebnie forum nowym tematem, zwłaszcza że problem rozwiązany, więc tylko dla kogoś, co mu się podobnie przytrafi.

    Polecenie composer install

    Standardowo: composer install > wynik.txt

    Ale w pliku wynik.txt nie mam wszystkiego co widzę na ekranie.
    Okazuje się, że wynik widoczny na ekranie częściowo jest drukowany na STDERR a częściowo na STDOUT.

    Żeby zapisać wszystko do pliku co widoczne jest na ekranie, trzeba napisać:
    composer install > wynik.txt 2>&1

Podsumowanie tematu

✨ Użytkownik poszukiwał sposobu na zapisywanie wyników działania programu konsolowego do pliku tekstowego w czasie rzeczywistym, bez buforowania. Odpowiedzi sugerowały użycie polecenia `tee`, które pozwala na jednoczesne wyświetlanie wyników na ekranie i zapisywanie ich do pliku. Wskazano również, że w przypadku aplikacji, która generuje dane przez dłuższy czas, konieczne może być modyfikowanie samego programu, aby umożliwić bieżące zapisywanie wyników. Dodatkowo, omówiono problem z przekierowaniem wyników z różnych strumieni (STDOUT i STDERR) do jednego pliku.
Wygenerowane przez model językowy.
REKLAMA