Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566

Логирование с фиксированием времени события

19.09.2019, 17:05. Показов 1609. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Имеется следующий сценарий:
Windows Batch file
1
2
3
4
5
6
7
8
9
portqry -n www.balans2.ru -e 443
if %errorlevel%==0 (wget.exe -c -r -l1 -nd -np -nc -k --content-disposition --no-check-certificate -A Setup_B2W_*.exe -R Setupsnabl*.exe,Setup_B2W_SystemComponents*.exe,Setup_B2W_UsersGuide*.exe,Setup_B2W_alt_SystemComponents*.exe,Setup_B2W_client.exe --reject=tmp,txt,doc,msi,htm,md5,tgz --timestamping https://www.balans2.ru/download/balans2_win_alt/ -P C:\balans2w 1>C:\job_scheduler\log\log.txt 2>&1) else (echo %time:~,-3% СЕТЕВОЙ РЕСУРС НЕДОСТУПЕН > C:\job_scheduler\log\log.txt)
type C:\job_scheduler\log\log.txt | find /I "saved" > C:\job_scheduler\log\log2.txt
type C:\job_scheduler\log\log2.txt | find /I "setup_b2w_" > C:\job_scheduler\log\log3.txt
for /f "tokens=5,7,8 delims=/'[]" %%a in (C:\job_scheduler\log\log3.txt) do call :# %%a %%b %%c
:#
if %2==%3 (echo %time:~,-3% Файл %1 скачан полностью >> C:\job_scheduler\log\1.txt) else (echo Файл %1 скачан не полностью и будет удалён >> C:\job_scheduler\log\1.txt)
echo %time:~,-3% >> C:\job_scheduler\log\1.txt
echo %time:~,-3% >> C:\job_scheduler\log\1.txt
Как сделать так, чтобы %time:~,-3% фиксировало корректное время? Выполнив сценарий и изучив лог 1.txt вы поймёте что я имею в виду. Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.09.2019, 17:05
Ответы с готовыми решениями:

Логирование времени
Подскажите как правильно организовать логику, нужно логировать время ПК каждые пол часа и хранить данные за последние 4 дня, перезаписывая...

Графика. Рисование ломаной линии с фиксированием узлов клавишей
Помогите пожалуйста с такой задачкой: Рисуется ломаная линия. Фиксирование первых и очередных узлов осуществляется нажатием клавиши...

Запуск события по времени
Хочу написать программу, что бы выполняла какие либо действия, но строго по дате, например что бы только какого то числа выводила...

9
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
19.09.2019, 19:12
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
set t1=%time:~,-3%
timeout /t 5
set t2=%time:~,-3%
echo %t1%
echo %t2%
echo -----------------------------
:: В цикле
for %%a in (a b c) do (
 if %%a==a call set t3=%%time:~,-3%%
 timeout /t 1
 if %%a==b call set t4=%%time:~,-3%%
)
echo %t3%
echo %t4%
pause
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
20.09.2019, 11:05  [ТС]
Почему же не отрабатывает, допустим, подобный сценарий? Я понимаю, что в цикле у меня некорректно указано формирование времени, но решить своими силами не могу:
Windows Batch file
1
2
3
4
5
6
7
portqry -n www.balans2.ru -e 443
if %errorlevel%==0 (wget.exe -c -r -l1 -nd -np -nc -k --content-disposition --no-check-certificate -A Setup_B2W_*.exe -R Setupsnabl*.exe,Setup_B2W_SystemComponents*.exe,Setup_B2W_UsersGuide*.exe,Setup_B2W_alt_SystemComponents*.exe,Setup_B2W_client.exe --reject=tmp,txt,doc,msi,htm,md5,tgz --timestamping https://www.balans2.ru/download/balans2_win_alt/ -P C:\balans2w 1>C:\job_scheduler\log\log.txt 2>&1) else (set "t1=%time:~,-3%" & echo %t1% СЕТЕВОЙ РЕСУРС НЕДОСТУПЕН > C:\job_scheduler\log\log.txt & exit)
type C:\job_scheduler\log\log.txt | find /I "saved" > C:\job_scheduler\log\log2.txt
type C:\job_scheduler\log\log2.txt | find /I "setup_b2w_" > C:\job_scheduler\log\log3.txt
for /f "tokens=5,7,8 delims=/'[]" %%a in (C:\job_scheduler\log\log3.txt) do call :# %%a %%b %%c
:#
if %2==%3 (set t2=%%time:~,-3%% & echo %t2% Файл %1 скачан полностью >> C:\job_scheduler\log\1.txt) else (echo %t2% Файл %1 скачан не полностью и будет удалён >> C:\job_scheduler\log\1.txt)
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
20.09.2019, 17:56
Karen87, может вы код в порядок сначала приведете чтобы было понятно что надо?

во-первых
Цитата Сообщение от Karen87 Посмотреть сообщение
if %errorlevel%==0
Цитата Сообщение от Karen87 Посмотреть сообщение
C:\balans2w 1>C:\job_scheduler\log\log.txt
иначе
Цитата Сообщение от Karen87 Посмотреть сообщение
echo %time:~,-3% СЕТЕВОЙ РЕСУРС НЕДОСТУПЕН > C:\job_scheduler\log\log.txt
т.е. при иначе будет только запись: [echo %time:~,-3% СЕТЕВОЙ РЕСУРС НЕДОСТУПЕН]
значит это
Цитата Сообщение от Karen87 Посмотреть сообщение
type C:\job_scheduler\log\log.txt | find /I "saved"
найдено не будет
соответственно "log2.txt" создан не будет, соответственно это искать негде
Цитата Сообщение от Karen87 Посмотреть сообщение
type C:\job_scheduler\log\log2.txt | find /I "setup_b2w_"
и "log3.txt" тоже не будет создан и что тогда разбирать в for /f ?
чтобы помочь надо полностью понимать задачу и цель и иметь под рукой нужные утилиты или видеть их вывод и все сделать за вас, получается.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
20.09.2019, 18:49  [ТС]
Так при иначе продолжение сценария бессмысленно. Если сетевой ресурс недоступен, то мне нужно лишь получить лог с фиксацией времени события недоступности и завершить сценарий
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
20.09.2019, 21:28
Цитата Сообщение от Karen87 Посмотреть сообщение
получить лог с фиксацией времени события
так в чем проблема-то, можете пояснить?
Кликните здесь для просмотра всего текста

Windows Batch file
1
2
3
4
5
6
7
8
@echo on
dir /a-d/b|find "log.txt"
if %errorlevel%==0 (
 >>"log.txt" echo %time:~,-3% true
) else (
 >>"log.txt" echo %time:~,-3% false
)
pause

0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
24.09.2019, 10:20  [ТС]
Цитата Сообщение от alpap Посмотреть сообщение
так в чем проблема-то, можете пояснить?
Проблема в том, что у вас чудесным образом фиксируется корректное (разное) время там, где оно должно фиксироваться. В моём случае везде одно и то же время. Мой случай - это сценарий в посте № 1.

Добавлено через 6 минут
Цитата Сообщение от alpap Посмотреть сообщение
так в чем проблема-то, можете пояснить?
Прошу прощения, только сейчас заметил разницу в Вашем примере. Итак, проблема в том, что я хочу, чтобы фиксация времени в сценарии там, где он она предусмотрена была корректной, то есть момент каждой фиксации времени в файле log.txt был уникальным. В моём случае получается, что везде одно и то же время.

Добавлено через 38 минут
Таким я вижу сценарий:
Windows Batch file
1
2
3
4
5
portqry -n www.balans2.ru -e 443
if %errorlevel%==0 (wget.exe -c -r -l1 -nd -np -nc -k --content-disposition --no-check-certificate -A Setup_B2W_*.exe -R Setupsnabl*.exe,Setup_B2W_SystemComponents*.exe,Setup_B2W_UsersGuide*.exe,Setup_B2W_alt_SystemComponents*.exe,Setup_B2W_client.exe --reject=tmp,txt,doc,msi,htm,md5,tgz --timestamping https://www.balans2.ru/download/balans2_win_alt/ -P C:\balans2w 1>C:\job_scheduler\log\log.txt 2>&1) else (echo %time:~,-3% СЕТЕВОЙ РЕСУРС НЕДОСТУПЕН > C:\job_scheduler\log\log.txt & exit)
type C:\job_scheduler\log\log.txt | find /I "saved" > C:\job_scheduler\log\log2.txt
type C:\job_scheduler\log\log2.txt | find /I "setup_b2w_" > C:\job_scheduler\log\log3.txt
for /f "tokens=5,7,8 delims=/'[]" %%a in (C:\job_scheduler\log\log3.txt) do if %%b==%%c (echo %time:~,-3% Файл %%a скачан полностью >> C:\job_scheduler\log\1.txt) else (echo %time:~,-3% Файл %%a скачан не полностью и будет удалён >> C:\job_scheduler\log\1.txt)
P.S. Это лишь часть кода, которая будет иметь продолжение

Добавлено через 6 минут
Цитата Сообщение от Karen87 Посмотреть сообщение
в файле log.txt был уникальным
Прошу прощения, 1.txt
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
24.09.2019, 14:15
Цитата Сообщение от Karen87 Посмотреть сообщение
В моём случае
ваш случай тяжелый, я это осветил в своем п4 и на основании того что я не понимаю ни вашего кода ни задачи, помочь соответственно ничем более уже не с силах.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
24.09.2019, 15:18  [ТС]
Описание кода по пунктам для тех кто может помочь:
1) Проверки доступности узла в интернете по 443 порту
2) В случае доступности посредством wget происходит поиск и скачивание дистрибутивов обновления бухгалтерского ПО по определённым параметрам. Результат работы wget перенаправляется в log.txt. В случае недоступности узла эхо-вывод перенаправляется в log.txt c фиксированием времени и сценарий завершается.
3) В файле log.txt осуществляется поиск по слову "saved" и вывод результатов поиска перенаправляется в log2.txt
4) В файле log2.txt осуществляется поиск по слову "setup_b2w_" и вывод результатов поиска перенаправляется в log3.txt
5) В файле log3.txt анализируется содержимое путём сравнения фактического размера скачанного файла и размера, который должен быть. В зависимости от результата сравнения эхо-вывод перенаправляется в 1.txt с фиксацией времени.
В случае, если следующей командой в сценарии будет перенаправление любого эхо в тот же файл 1.txt так же с фиксацией времени, то время будет точно такое же, как в п. 5.
Вопрос. Почему везде фигурирует одно и то же время вплоть до секунды?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
25.09.2019, 11:32  [ТС]
Windows Batch file
1
2
3
4
5
6
setlocal enabledelayedexpansion
portqry -n www.balans2.ru -e 443
if %errorlevel%==0 (wget.exe -c -r -l1 -nd -np -nc -k --content-disposition --no-check-certificate -A Setup_B2W_*.exe -R Setupsnabl*.exe,Setup_B2W_SystemComponents*.exe,Setup_B2W_UsersGuide*.exe,Setup_B2W_alt_SystemComponents*.exe,Setup_B2W_client.exe --reject=tmp,txt,doc,msi,htm,md5,tgz --timestamping https://www.balans2.ru/download/balans2_win_alt/ -P C:\balans2w 1>C:\job_scheduler\log\log.txt 2>&1) else (echo !time:~,-3! СЕТЕВОЙ РЕСУРС НЕДОСТУПЕН > C:\job_scheduler\log\log.txt & exit)
type C:\job_scheduler\log\log.txt | find /I "saved" > C:\job_scheduler\log\log2.txt
type C:\job_scheduler\log\log2.txt | find /I "setup_b2w_" > C:\job_scheduler\log\log3.txt
for /f "tokens=5,7,8 delims=/'[]" %%a in (C:\job_scheduler\log\log3.txt) do if %%b==%%c (echo !time:~,-3! Файл %%a скачан полностью >> C:\job_scheduler\log\1.txt) else (echo !time:~,-3! Файл %%a скачан не полностью и будет удалён >> C:\job_scheduler\log\1.txt)
Тему можно закрывать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.09.2019, 11:32
Помогаю со студенческими работами здесь

Отсчет времени до события
Здравствуйте,есть такой вопрос,как можно сделать отсчет времени(дней,часов,минут,секунд) до определенной даты - например день рождение. ...

Подсчёт времени до события
Подскажите пожалуйста, как подсчитать время от "сейчас" до заданного? Можно ли это реализовать через структуру tm? struct tm *tnow; ...

Отсчёт времени до ближайшего события
всем привет, есть несколько событий со своим временеи, надо сделать так чтобы был отсчет времени доближайшего события.А когда событие...

Запуск события по истечении заданного времени
Добрый день! Хочу повесить завершение процесса одной программы на таймер. Возник вопрос. Как отследить, что текущее время больше чем...

Запуск события по дате и времени из DBGrid
Здравствуйте Уважаемые программисты, нужна помощь, есть стандартная база даных *.cds, к ней прикручен DBGrid. Как можно вывести например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru