批处理bat获取文件夹内的最新文件的修改时间,与当前系统时间进行对比

批处理bat获取文件夹内的最新文件的修改时间,与当前系统时间进行对比,第1张

@echo off

set @=q&set/an=0x53b7e0b4

title Any question +%@%%@% %n%

cd /d "%~dp0"

set "logfolder=D:\sk"

set "exefile=D:\testexe"

set "record=记录txt"

if not exist "%logfolder%" (echo;"%logfolder%" not found&pause&exit)

if not exist "%exefile%" (echo;"%exefile%" not found&pause&exit)

>"%tmp%\tt" echo;WSHecho DateDiff("n",CreateObject("ScriptingFileSystemObject")GetFile(WSHArguments(0))DateLastModified,now)

cd>"%record%"

for /f %%a in ("%exefile%") do set "exename=%%~nxa"

:loop

cls

for /f "delims=" %%a in ('dir /a-d /b /tw /o-d "%logfolder%\log"') do (set fname=%%a&goto break)

:break

if not defined fname (goto end)

echo;"%fname%"

for /f %%a in ('cscript -nologo -e:vbscript "%tmp%\tt" "%logfolder%\%fname%"') do (

    echo;[%%a]

    if %%a geq 12 (

        taskkill /f /im "%exename%" /t

        start "" "%exefile%"

        >>"%record%" echo;restart at %date% %time%

    )

)

:end

echo;Any question +%@%%@% %n%

if exist "%windir%\System32\timeoutexe" (timeout /t 60 /nobreak) else (>nul ping /n 60 0)

goto loop

@echo off

echo wscriptecho dateadd("d",-1,now())>xvbs

for /f %%i in ('cscript /nologo xvbs') do set d=%%i

del xvbs

echo %d%

pause

@echo off

title 同一月份下的耗时计算

::获取起始月份、起始日期、起始小时和起始分钟

set startmonth=%date:~5,2%

set startday=%date:~8,2%

set starthour=%time:~0,2%

set startmin=%time:~3,2%

echo&echo 修改系统日期和时间为未来同一个月份下的某日某月某时某分 以便测试脚本

echo 完成修改后 按任意键继续

pause >nul

::获取终止月份、终止日期、终止小时和终止分钟

set endmonth=%date:~5,2%

set endday=%date:~8,2%

set endhour=%time:~0,2%

set endmin=%time:~3,2%

::初始化间隔日期变量、间隔小时变量和间隔分钟变量

set intday=0

set inthour=0

set intmin=0

::初始化耗时变量

set inttime=0

::如果结束月份和起始月份不在同一月 则调用calc4标签

if %endmonth% NEQ %startmonth% (call:calc4 & goto :finalresult)

::如果结束日期等于起始日期 则调用calc1标签

if %endday% EQU %startday% (call:calc1 & goto :finalresult)

::如果结束日期大于起始日期 则调用calc2标签

if %endday% GTR %startday% (call:calc2 & goto :finalresult)

::如果结束日期小于起始日期 则调用calc3标签

if %endday% LSS %startday% (call:calc3 & goto :finalresult)

::备注:没有规避同一天内结束小时小于起始小时、以及同一小时内结束分钟小于起始分钟的情况,因为在脚本运行过程中,逻辑上一般不会出现这两种情况。

::显示耗时

:finalresult

echo 耗时:%inttime%

exit /b

::同一天内的耗时计算 需考虑到结束分钟小于起始分钟的时候 从终止小时借位的情况

:calc1

if /i %endmin% LSS %startmin% (set /a intmin=endmin+60-startmin & set /a endhour-=1) else (set /a intmin=endmin-startmin)

set /a inthour=endhour-starthour

set /a intday=endday-startday

set inttime=%intday%天%inthour%小时%intmin%分钟

goto :eof

::同一月份但不同天内的耗时计算 需考虑到结束分钟小于起始分钟的时候 从终止小时借位的情况 需考虑到结束小时小于起始小时的时候 从终止日期借位的情况

:calc2

if /i %endmin% LSS %startmin% (set /a intmin=endmin+60-startmin & set /a endhour-=1) else (set /a intmin=endmin-startmin)

if /i %endhour% LSS %starthour% (set /a inthour=endhour+24-starthour & set /a endday-=1) else (set /a inthour=endhour-starthour)

set /a intday=endday-startday

set inttime=%intday%天%inthour%小时%intmin%分钟

goto :eof

::同一月份下 结束日期逻辑上不能小于起始日期 抛出错误

:calc3

set inttime=错误!结束日期小于起始日期!

goto :eof

::跨月份的情况忽略不计

:calc4

set inttime=跨月份忽略耗时计算

goto :eof

您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!::保存为bat并运行

@echo off

for /f "tokens=1,2,3 delims=- " %%i in ('date /t') do echo %%i%%j%%k

pause

不知道运行的结果是不是达到了你所要的目的

我刚刚开始学,让我们共同勉励非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!

@echo off & setlocal

set "tt=%time: =0%"

set filename=%date:~0,4%%date:~5,2%%date:~8,2%%tt:~0,2%%tt:~3,2%%tt:~6,2%

echo %filename%

endlocal @echo off

一、先比较直接的查看当前的日期和时间:(或者cmd中直接输入date,time查看)

@echo off

color 0a

set dt=%date%%time%

echo %dt%

pause

二、使用截取进行命名(时间为12小时制时命名会出现空格,不严谨)

%date:~0,4% :表示从左往右指针偏移0位,然后从偏移的位置进行截取4个字符。如果是从右往左截取,则需要加上负号

@echo off

color 0a

set ymd=%date:~0,4%%date:~5,2%%date:~8,2%

set hms=%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%

rem 或者 set hms=%time:~-11,2%%time:~-8,2%%time:~-5,2%%time:~-2,2%

set dt=%ymd%%hms%

echo %dt%

mkdir "%dt%"

pause

三、使用for  /f 来进行命名

eol=/   指以/ 号开头的行为为注释行

tokens=x,y,m-n   指每行的哪一个符号被传递到每个迭代的 for 本身,m-n是格式指的是一个范围

delims=xx   指分隔符集。这个替换了空格和跳格键的默认分隔符集

写法:

@echo off

color 0a

for /f "tokens=1,2 eol=/ delims=/ " %%a in ('date/t') do set yyyy=%%a

for /f "tokens=1,2 eol=/ delims=/" %%a in ('date/t') do set mm=%%b

for /f "tokens=2,3 delims=/ " %%a in ('date/t') do set dd=%%b

set ymd=%yyyy%%mm%%dd%

set tmp_hms=%time:~-11,2%%time:~-8,2%%time:~-5,2%

set hms=%tmp_hms: =%6

set dt=%ymd%%hms%

echo %dt%

mkdir "%dt%"

pause

扩展资料

当时间为12小时制时,以上几种写法会出空格现象,下面将展示一下解决方法:

可以在之前的脚本中加上一句判断

if "%time:~0,1%"==" " set "time=0%time:~1%"

@echo off

color 0a

for /f "tokens=" %%a in ('time/t') do set now=%%a

set ymd=%date:~0,4%%date:~5,2%%date:~8,2%

set hms=%now:~0,2%%now:~3%%time:~6,2%

set dt=%ymd%%hms%

echo %dt%

pause

以上就是关于批处理bat获取文件夹内的最新文件的修改时间,与当前系统时间进行对比全部的内容,包括:批处理bat获取文件夹内的最新文件的修改时间,与当前系统时间进行对比、在windows下.bat脚本中怎样取上一日日期、bat读取时间、计算时间间隔脚本等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9326898.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存