1

я хочу иметь командный файл, который запускается при запуске и регистрируется, когда компьютер запускается и как долго он был включен. это код, который я использую для входа при запуске компьютера:

echo Date:%date% Time:%time% >> C:\Users\Kristian\Documents\Kristian\HEI\log.txt

Вот моя идея для кода, который будет также регистрировать время:

echo Date:%date% Time:%time% >> C:\Users\Kristian\Documents\Kristian\HEI\log.txt

set /a variableA=0

:a

timeout 60 /nobreak

set /a variableA=%variableA%

set /a variableB=%variableA%+1

del "C:\Users\Kristian\Documents\Kristian\HEI\templogfile_%variableA%.txt"

echo.>"C:\Users\Kristian\Documents\Kristian\HEI\templogfile_%variableB%.txt"

goto a

Этот пакетный файл запускается при запуске и регистрирует, как долго компьютер был в последний раз, а затем добавляет дату и время для этого времени. затем он начнет отсчитывать минуты за это время и добавлять их при следующем запуске компьютера. Мне нужна только помощь по следующей части:

Что я должен поставить после templogfile_ в

`"C:\Users\Kristian\Documents\Kristian\HEI\templogfile_*" >> C:\Users\Kristian\Documents\Kristian\HEI\log.txt

2 ответа2

1

Как написано в настоящее время, ваш командный файл всегда приводит к

echo.>"C:\Users\Kristian\Documents\Kristian\HEI\templogfile_1.txt"

как %variableB% продолжает оставаться 1 .

Однако следующий фрагмент кода с комментариями может помочь в извлечении желаемого значения (цитата из исходного вопроса):

Что следует за " templogfile_ " в " C:\Users\Kristian\Documents\Kristian\HEI\templogfile_* "

for /f "delims=" %%G in ('
    dir /b /O:D "C:\Users\Kristian\Documents\Kristian\HEI\templogfile_*"
                         ') do (
    set "_rawNumber=%%~nG"                 gets last file name e.g. templogfile_357
)
    rem there is identical output from next two ECHO commands:
    rem any text remaining in %_rawNumber% variable if `templogfile_` substring is removed
ECHO(%_rawNumber:templogfile_=%
    rem any text following 12th character in %_rawNumber% variable
ECHO(%_rawNumber:~12%

Ресурсы (требуется чтение, не полностью):

0

Спасибо :) Вот мой окончательный код:

for /f "delims=" %%G in ('
    dir /b /O:D "C:\Users\Kristian\Documents\Kristian\HEI\templogfile_*"
                         ') do (
    set "_rawNumber=%%~nG"               
)  
set variable=%_rawNumber:~12% Minutter
echo %variable% >> C:\Users\Kristian\Documents\Kristian\HEI\log.txt
echo. >> C:\Users\Kristian\Documents\Kristian\HEI\log.txt
echo Date:%date%   Time:%time% >> C:\Users\Kristian\Documents\Kristian\HEI\log.txt

set /a variable=0
:a
timeout 60 /nobreak
del "C:\Users\Kristian\Documents\Kristian\HEI\templogfile_*.txt"
set /a variable=%variable%+1
echo.>"C:\Users\Kristian\Documents\Kristian\HEI\templogfile_%variable%.txt" 
goto a

А вот VBScript, который запускает пакетный файл в фоновом режиме:

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Users\Kristian\Documents\Kristian\HEI\log.bat" & Chr(34), 0
Set WinScriptHost = Nothing

Вот пример из журнала:

Дата:13.09.2016 Время:21.27.00,57
13 минут

Дата:13.09.2016 Время:21.40.36,60
6 минут

Дата:13.09.2016 Время:21.49.47,20

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .