2017-01-20 25 views
0

Другие вопросы всегда относятся к текущему времени, но мне нужен сценарий для выполнения чего-то, основанного на значении времени в определенной строке в файле журнала.Команды пакетного файла на основе времени в файле журнала?

Файл журнала содержит строки этого формата:

Билли - 13:42:14

мне нужна пакетный файл, чтобы вычислить количество времени, которое прошло с момента установленного времени (напр 13. : 00: 00). Таким образом, в этом случае выход будет 00:42:14.

Как я могу заставить скрипт найти строку, содержащую «Билли», но затем посмотреть и проанализировать значение времени в конце строки для достижения вышеуказанного.

Заранее спасибо.

+0

Дата/время математика не является родным для Windows, 'cmd'/партии; позвольте мне предложить использовать другой язык, такой как PowerShell, VBScript или JavaScript, которые являются родными для Windows и способны к истинной арифметике даты/времени ... – aschipfl

ответ

0

Как насчет следующего сценария? Предустановленное время и файл журнала могут быть заданы соответственно «pretime» и «logfile». «Билли» выполняется поиск из файла журнала. И разность времени выводится. Он ответил, даже когда есть несколько строк, включая «Билли».

Файл журнала:

aBilly - 13:42:14 
Billy - 13:42:14 
cBilly - 13:42:14 
Billy - 13:13:14 
dBilly - 13:42:14 

Сценарий:

@echo off 
setlocal enabledelayedexpansion 
set pretime=13:00:00 
set logfile=sample.log 

call :timetosec %pretime% 
set pretime=!sec! 
for /f "tokens=1-3 delims= " %%i in (%logfile%) do (
    if %%i==Billy (
     call :timetosec %%k 
     set /a d=!sec!-%pretime% 
     call :sectotime %d% 
     echo !outtime! 
    ) 
) 
goto :EOF 

:timetosec 
set t=%1 
set /a h=%t:~0,2%*3600 
set /a m=%t:~3,2%*60 
set s=%t:~6,2% 
set /a sec=%h%+%m%+%s% 
goto :EOF 

:sectotime 
set /a m=%d%/60 
set /a s=%d%-(%m%*60) 
set /a h=%m%/60 
set /a m=%m%-(%h%*60) 
if %h% lss 10 set h=0%h% 
if %m% lss 10 set m=0%m% 
if %s% lss 10 set s=0%s% 
set outtime=%h%:%m%:%s% 
goto :EOF 

Выход:

00:42:14 
00:13:14 
+0

Спасибо! Очень ценю ваше время :) –