Użyj cmd.exe
procesora poleceń, aby utworzyć nazwę pliku ze znacznikiem czasu, aby zarejestrować dane wyjściowe zaplanowanego zadania
Aby oprzeć się na odpowiedziach innych osób, może być konieczne utworzenie pliku wyjściowego z datą i / lub godziną osadzoną w nazwie pliku. Możesz to zrobić za pomocą cmd.exe
procesora poleceń.
Uwaga: Ta technika pobiera ciąg wyjściowy wewnętrznych zmiennych środowiskowych systemu Windows i dzieli je na kawałki na podstawie pozycji znaku. Z tego powodu dokładne wartości podane w poniższych przykładach mogą nie być poprawne dla używanego regionu systemu Windows. Ponadto, przy niektórych ustawieniach regionalnych, niektóre składniki daty lub godziny mogą wprowadzić spację do utworzonej nazwy pliku, gdy ich wartość jest mniejsza niż 10. Aby złagodzić ten problem, należy umieścić nazwę pliku w cudzysłowie, tak aby wszelkie niezamierzone spacje w pliku name nie zepsuje linii poleceń, którą tworzysz. Eksperymentuj i znajdź to, co najlepiej pasuje do Twojej sytuacji.
Pamiętaj, że PowerShell
jest potężniejszy niż cmd.exe
. Jednym ze sposobów jest to, że jest bardziej wydajny, ponieważ radzi sobie z różnymi regionami systemu Windows. Ale ta odpowiedź dotyczy rozwiązania tego problemu za pomocą cmd.exe
, a nie PowerShell
, więc kontynuujemy.
Za pomocą cmd.exe
Możesz uzyskać dostęp do różnych składników daty i godziny, wycinając wewnętrzne zmienne środowiskowe %date%
i %time%
, w następujący sposób (ponownie, dokładne wartości podziału zależą od regionu skonfigurowanego w systemie Windows):
- Rok (4 cyfry):
%date:~10,4%
- Miesiąc (2 cyfry):
%date:~4,2%
- Dzień (2 cyfry):
%date:~7,2%
- Godzina (2 cyfry):
%time:~0,2%
- Minuta (2 cyfry):
%time:~3,2%
- Drugi (2 cyfry):
%time:~6,2%
Załóżmy, że chcesz, aby plik dziennika został nazwany przy użyciu tego formatu daty / godziny: „ Log_[yyyyMMdd]_[hhmmss].txt
”. Użyłbyś:
Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
Aby to przetestować, uruchom następujący wiersz poleceń:
cmd.exe /c echo "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt"
Łącząc to wszystko razem, aby przekierować zarówno stdout
i stderr
ze skryptu do pliku dziennika o nazwie z bieżącą datą i godziną, użyj poniższego wiersza poleceń:
cmd /c YourProgram.cmd > "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt" 2>&1
Zwróć uwagę na użycie cudzysłowów wokół nazwy pliku w celu obsługi wystąpień składnika daty lub godziny może wprowadzić znak spacji.
W moim przypadku, jeśli bieżąca data / godzina to 10/05/2017 9:05:34 AM, powyższa linia poleceń wygeneruje:
cmd /c YourProgram.cmd > "Log_20171005_ 90534.txt" 2>&1