我想要一个在启动时运行的批处理文件,并记录计算机的启动时间和启动时间。这是我在启动计算机时用来记录的代码:
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
答案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%
资源(必读,未完成):
- (命令参考)Windows CMD 命令行的 AZ 索引
- (其他细节)Windows CMD Shell 命令行语法
- (
%~G
等%~nG
专题页面)命令行参数(参数) - (
%_rawNumber:~12%
)提取变量的一部分(子字符串) - (
%_rawNumber:templogfile_=%
)变量编辑/替换
答案2
谢谢:)这是我的最终代码:
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
以下是日志中的一个示例:
日期:2016-09-13 时间:21.27.00,57
13分钟日期:2016-09-13 时间:21.40.36,60
6分钟日期:2016-09-13 时间:2016-09-21