To jest Windows 10. Pytanie jest bardzo proste, po prostu nie znam odpowiedniej składni, aby to zrobić.
Spowoduje to wyświetlenie wszystkich plików z rozszerzeniem .log:
dir /s /p *.log
Spowoduje to obcięcie pliku:
echo|set /p=>"myfile.log"
To, co chciałbym zrobić, to przesłać dane wyjściowe pierwszej operacji do drugiej operacji, tym samym obcinając pasujące pliki zwrócone przez dir
. Jak mam to zrobić?
Odpowiedzi:
Rurociągi do normalnego cmd nie są tak powszechne w systemie Windows. Więc dla cmd prawdopodobnie będziesz musiał uzyskać listę tych plików w zmiennej i użyć pętli for do ich przetworzenia. Być może możesz również bezpośrednio użyć
dir
polecenia w pętli.Wybrałbym PowerShell, który działa podobnie, ale moim zdaniem jest bardziej czytelny:
Jeśli chcesz potwierdzić każdy pojedynczy plik (
/P
na twoimdir
wstrzymuje każdy ekran), możesz użyć-Confirm
włącznikaClear-Content
.Jeśli chcesz użyć pętli for z dowolnego powodu i użyć echa, którego możesz użyć:
źródło
Aby po prostu zebrać dane wyjściowe katalogu w pliku dziennika, upuść / p i przekieruj katalog / s * .log> mój_plik.log
Spowoduje to utworzenie nowego pliku, usuwając wszystkie poprzednie treści.
Jeśli chcesz uzyskać pełną ścieżkę w każdej linii, zamiast listowania według podkatalogów, użyj / b katalog / s / b * .log> mój_plik.log
źródło
dir
zwracane do 0 bajtów - nie zapisywać niczego na myfile.log. Nie ma pliku myfile.log - to tylko przykład. Edytowałem mój post, aby to wyjaśnić.Jak obciąć pasujące pliki zwrócone przez
dir /s /p *.log
?Użyj następującego pliku wsadowego (test.cmd):
Przykładowe użycie:
Dalsza lektura
źródło