|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Запись результата TIME в текстовый файл |
|
CMD/BAT - Запись результата TIME в текстовый файл
|
Старожил Сообщения: 310 |
Профиль | Отправить PM | Цитировать Мне нужно засечь время завершения и запуска ОС. Я хотел использовать TIME в командном BAT-файле. Но это интерактивная команда. TIME /T не подходит, т.к. пишет только минуты и секунды. А TIME выводит еще и тики.
Как бы это сделать? "Ответить" "энтерЭ-ом в батнике и выделить только ту часть, которая содержит время. Если такое получиться, можно ли там же в батнике найти разницу между двумя временными метками? |
|
Отправлено: 14:13, 13-04-2014 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать Уж простите, напишу сюда, чтоб не создавать новую тему, т.к. эта вроде более всего подходит по тематике.
Для проверки получения снимков даты-времени между началом и концом выполнения пакетника написал простенький скрипт для проверки вообще, как будет выводить снимки даты-времени по ходу выполнения: Скрытый текст
@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"! А ведь должно, по идее, возрастать на одну секунду! Такое впечатление, что оно "замирает" на все время выполнения скрипта. Неправильно это. А в чем дело - понять пока не могу. То ли это глюк интерпретатора, то ли не знаю даже, что и думать... |
Отправлено: 10:05, 13-03-2018 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2703
|
Профиль | Отправить PM | Цитировать Вариант 1
Вариант 2
|
------- Последний раз редактировалось megaloman, 13-03-2018 в 13:09. Отправлено: 12:43, 13-03-2018 | #12 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать Все заработало по первому варианту. Правда, пришлось отказаться от использования символа "!" в именах каталогов, т.к. тогда неправильно формирует пути. А как его можно использовать как символ, принудительно - я не нашел. Ну, с этим можно смириться...
|
Отправлено: 17:52, 13-03-2018 | #13 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата Barmaley000:
megaloman в 3м варианте именно и сделал возможность не терять ! |
|
Отправлено: 17:57, 13-03-2018 | #14 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать да, спасибо, я это понял. Дело в том, что в реальном скрипте нету циклов, привожу фрагмент как есть:
Скрытый текст
...................................... :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% интерпретатор достиг конца файла. А мне вроде этого не надо, ну или дальше мудрить... |
Отправлено: 18:10, 13-03-2018 | #15 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать допустим:
:copying if exist "%DestPath%%PrefDestName%%arch_date%-%arch_time%%pathend%" call :ncopy "%DestPath%%PrefDestName%%arch_date%-%arch_time%%pathend%" "%DestPath%" if not exist "%DestPath%%PrefDestName%%arch_date%-%arch_time%%pathend%" call :ycopy "%DestPath%%PrefDestName%%arch_date%-%arch_time%%pathend%" "%DestPath%" pause& exit :ncopy >>%log% ( echo файлы "%~1" уже существуют. ) exit /b :ycopy >>%log% ( echo Начало копирования: %date% %time% echo xcopy "%~1" "%~2" /C /Y xcopy "%~1" "%~2" /C /Y ) >>%log% ( echo Конец копирования: %date% %time% echo ---------------------------------------- ) exit /b |
Отправлено: 18:58, 13-03-2018 | #16 |
Ветеран Сообщения: 2703
|
Профиль | Отправить PM | Цитировать Barmaley000,
Попробуйте Ваш кусок изобразить в виде
:copying rem делаем копию архива на другой комп Set "PFile=%DestPath%%PrefDestName%%arch_date%-%arch_time%%pathend%" Set "XComm=xcopy "%ArchivePath%%PrefDestName%%arch_date%-%arch_time%%pathend%" "%DestPath%" /C /Y" if Exist "%PFile%" Echo файлы "%PFile%" уже существуют. >> "%log%" &GoTo :Continue Echo Начало копирования: %date% %time% >> "%log%" echo %XComm% >> "%log%" %XComm% >> "%log%" 2>&1 Echo Конец копирования: %date% %time% >> "%log%" Echo ---------------------------------------- >> "%log%" :Continue Либо, по мотивам произведения alpap
:copying rem делаем копию архива на другой комп Set "PFile=%DestPath%%PrefDestName%%arch_date%-%arch_time%%pathend%" Set "XComm=xcopy "%ArchivePath%%PrefDestName%%arch_date%-%arch_time%%pathend%" "%DestPath%" /C /Y" >>"%log%" 2>&1 Call :CopyOut rem ....................... rem ....................... GoTo :Eof :CopyOut if Exist "%PFile%" Echo файлы "%PFile%" уже существуют. &Exit /B 1 Echo Начало копирования: %date% %time% echo %XComm% %XComm% Echo Конец копирования: %date% %time% Echo ---------------------------------------- Exit /B 0 |
------- Последний раз редактировалось megaloman, 13-03-2018 в 21:11. Отправлено: 20:16, 13-03-2018 | #17 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать megaloman, пожалуйста, разъясните, что за "козявки" типа "2>&1" в строке
%XComm% >> "%log%" 2>&1 чего обозначают, и где об этом почитать можно? |
Отправлено: 13:10, 14-03-2018 | #18 |
Ветеран Сообщения: 2703
|
Профиль | Отправить PM | Цитировать пожалуйста, разъясните, что за "козявки" чего обозначают, и где об этом почитать можно?
Использование операторов перенаправления команд Сообщения команды при нормальной работе выводятся в окно командной строки в поток 1. Вы перенаправляете этот вывод в файл. Если есть сообщения об ошибках при выполнении, они выводятся в поток 2. 2>&1 перенаправляет сообщения об ошибках в первый поток, то есть в Вашем случае, в файл. То есть в лог-файле Вы при этом получите не только сообщения о нормальной работе команды, но и об ошибках, если такие произойдут
|
------- Отправлено: 13:31, 14-03-2018 | #19 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать alpap, проверил, понравилось - работает! Кое-что понял для себя.
megaloman, спасибо за ссылку, просветился. А я раньше думал, чего это вывод ошибок выполнения команд идет не в файл, а в консоль? Теперь понимаю. |
Отправлено: 17:09, 14-03-2018 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Отредактировать текстовый файл | login | AutoIt | 12 | 16-01-2014 12:55 | |
CMD/BAT - Запись результата команды в txt | DeepPurple | Скриптовые языки администрирования Windows | 4 | 12-12-2013 15:31 | |
VBS/WSH/JS - [решено] Запись пути к выделенной папке в текстовый файл | Sta1917 | Программирование и базы данных | 5 | 25-02-2013 19:09 | |
добавить запись в текстовый файл не открывая его. | GooDok | AutoIt | 3 | 19-10-2010 16:42 | |
VBS/WSH/JS - Экспорт значений реестра в общий текстовый файл + добавление доп данных в этот файл | fedko | Скриптовые языки администрирования Windows | 0 | 17-06-2010 11:52 |
|