
@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读取时间、计算时间间隔脚本等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)