Запись результата TIME в текстовый файл
Мне нужно засечь время завершения и запуска ОС. Я хотел использовать TIME в командном BAT-файле. Но это интерактивная команда. TIME /T не подходит, т.к. пишет только минуты и секунды. А TIME выводит еще и тики.
Как бы это сделать? "Ответить" "энтерЭ-ом в батнике и выделить только ту часть, которая содержит время. Если такое получиться, можно ли там же в батнике найти разницу между двумя временными метками? |
|
для замера времени использую самописанные утилитки http://forum.oszone.net/post-2275768-8.html
|
Код:
echo %time%>>tboot.log Получается так: Код:
15:45:13,65 Как бы еще <CR><LF> добавить? Разбить пары. |
Цитата:
Цитата:
про подсчёт http://forum.oszone.net/thread-144189.html http://forum.oszone.net/nextoldesttothread-234042.html |
Цитата:
|
Цитата:
А следующие примеры кода зачем? И чем их выполнять? Цитата:
|
Цитата:
|
Не, я про сообщение, где Iska кроме wmic.exe дает пару кусков кода.
Например: Код:
Get-EventLog -LogName system -Source eventlog |` |
Цитата:
|
Уж простите, напишу сюда, чтоб не создавать новую тему, т.к. эта вроде более всего подходит по тематике.
Для проверки получения снимков даты-времени между началом и концом выполнения пакетника написал простенький скрипт для проверки вообще, как будет выводить снимки даты-времени по ходу выполнения: Скрытый текст
@echo off
for /l %%i in (0,1,9) do ( echo %%i: %date% %time% rem Пауза-задержка на 1 сек. timeout /t 1 ) Результат вывода (проверено на Windows 7 SP1 x64, XP SP3 x86): Скрытый текст
D:\docs>tmp 0: 13.03.2018 8:57:48.18 Время ожидания 0 сек., нажмите любую клавишу для продолжения ... 1: 13.03.2018 8:57:48.18 Время ожидания 0 сек., нажмите любую клавишу для продолжения ... 2: 13.03.2018 8:57:48.18 Время ожидания 0 сек., нажмите любую клавишу для продолжения ... 3: 13.03.2018 8:57:48.18 Время ожидания 0 сек., нажмите любую клавишу для продолжения ... 4: 13.03.2018 8:57:48.18 Время ожидания 0 сек., нажмите любую клавишу для продолжения ... 5: 13.03.2018 8:57:48.18 Время ожидания 0 сек., нажмите любую клавишу для продолжения ... 6: 13.03.2018 8:57:48.18 Время ожидания 0 сек., нажмите любую клавишу для продолжения ... 7: 13.03.2018 8:57:48.18 Время ожидания 0 сек., нажмите любую клавишу для продолжения ... 8: 13.03.2018 8:57:48.18 Время ожидания 0 сек., нажмите любую клавишу для продолжения ... 9: 13.03.2018 8:57:48.18 Время ожидания 0 сек., нажмите любую клавишу для продолжения ... D:\docs> Как видим, везде во временных метках стоит одно и то же время: "8:57:48.18"! А ведь должно, по идее, возрастать на одну секунду! Такое впечатление, что оно "замирает" на все время выполнения скрипта. Неправильно это. А в чем дело - понять пока не могу. То ли это глюк интерпретатора, то ли не знаю даже, что и думать... |
Вариант 1
Код:
@echo off Вариант 2
Код:
@echo off Вариант 3
Код:
@echo off |
Все заработало по первому варианту. Правда, пришлось отказаться от использования символа "!" в именах каталогов, т.к. тогда неправильно формирует пути. А как его можно использовать как символ, принудительно - я не нашел. Ну, с этим можно смириться...
|
Цитата:
megaloman в 3м варианте именно и сделал возможность не терять ! |
да, спасибо, я это понял. Дело в том, что в реальном скрипте нету циклов, привожу фрагмент как есть:
Скрытый текст
...................................... :copying rem делаем копию архива на другой комп if exist "%DestPath%%PrefDestName%%arch_date%-%arch_time%%pathend%" echo файлы "%DestPath%%PrefDestName%%arch_date%-%arch_time%%pathend%" уже существуют. >> %log% rem Если копий архива не существует... if not exist "%DestPath%%PrefDestName%%arch_date%-%arch_time%%pathend%" ( rem включение режима расширенной обработки комманд для правильного считывания снимков даты-времени !date! !time! SetLocal EnableExtensions EnableDelayedExpansion echo Начало копирования: !date! !time! >> %log% echo xcopy "%ArchivePath%%PrefDestName%%arch_date%-%arch_time%%pathend%" "%DestPath%" /C /Y >> %log% xcopy "%ArchivePath%%PrefDestName%%arch_date%-%arch_time%%pathend%" "%DestPath%" /C /Y >> %log% echo Конец копирования: !date! !time! >> %log% echo ---------------------------------------- >> %log% ) [EOF] вот внутри конструкции "if" и происходит считывание двух меток между командой копирования xcopy. И чтобы его заставить работать без "setlocal", надо, чтоб между выводами команды echo Начало копирования: !date! !time! >> %log% интерпретатор достиг конца файла. А мне вроде этого не надо, ну или дальше мудрить... |
допустим:
Код:
:copying |
Barmaley000,
Попробуйте Ваш кусок изобразить в виде
Код:
:copying Либо, по мотивам произведения alpap
Код:
:copying |
megaloman, пожалуйста, разъясните, что за "козявки" типа "2>&1" в строке
%XComm% >> "%log%" 2>&1 чего обозначают, и где об этом почитать можно? |
пожалуйста, разъясните, что за "козявки" чего обозначают, и где об этом почитать можно?
Использование операторов перенаправления команд Сообщения команды при нормальной работе выводятся в окно командной строки в поток 1. Вы перенаправляете этот вывод в файл. Если есть сообщения об ошибках при выполнении, они выводятся в поток 2. 2>&1 перенаправляет сообщения об ошибках в первый поток, то есть в Вашем случае, в файл. То есть в лог-файле Вы при этом получите не только сообщения о нормальной работе команды, но и об ошибках, если такие произойдут
|
alpap, проверил, понравилось - работает! Кое-что понял для себя.
megaloman, спасибо за ссылку, просветился. А я раньше думал, чего это вывод ошибок выполнения команд идет не в файл, а в консоль? Теперь понимаю. :) |
Время: 03:50. |
Время: 03:50.
© OSzone.net 2001-