使用批处理文件获取文件名中的最后一个字符

使用批处理文件获取文件名中的最后一个字符

我想要一个在启动时运行的批处理文件,并记录计算机的启动时间和启动时间。这是我在启动计算机时用来记录的代码:

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%

资源(必读,未完成):

答案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

相关内容