[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 77七 于 2023-8-19 19:23 编辑

a.txt
  1. 19:33:30 August 16 2023>   企业 名称:优 美 利 A
  2. 19:35:30 August 16 2023>   企业 名称:优 美 利 A
  3. 19:36:30 August 16 2023>   企业 名称:优 美 利 A
  4. 19:37:30 August 16 2023>   企业 名称:优 美 利 A
  5. 19:38:31 August 16 2023>   退出
  6. 20:37:30 August 16 2023>   企业 名称:利海 B
  7. 20:38:31 August 16 2023>   退出
复制代码

  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. setlocal enabledelayedexpansion
  4. for %%a in (January February March April May June July August September October November December) do (
  5.         set /a n+=1
  6.         set %%a=!n!
  7. )
  8. (for /f "useback tokens=1-4*" %%a in ("a.txt") do (
  9.         set str_year=%%d
  10.         if "%%e" neq "退出 " (
  11.                 if not defined str_t1 (
  12.                         set str_t1=!str_year:~0,-1!-!%%b!-%%c %%a
  13.                         set str_name=%%e
  14.                 )
  15.         ) else (
  16.                 set str_t2=!str_year:~0,-1!-!%%b!-%%c %%a
  17.                 call :t "!str_t1!" "!str_t2!" "!str_name!"
  18.                 set str_t1=
  19.                 set str_t2=
  20.         )
  21. ))>b.txt
  22. endlocal
  23. pause
  24. exit
  25.         :t
  26.         ::日期时间差 code by foxjl
  27.         set date1=%~1
  28.         set date2=%~2
  29.         for /f "tokens=1,2,3,4,5,6,7 delims=-/:. " %%i in ("%date1%") do ((set Y1=%%i) && (set M1=%%j) && (set D1=%%k) && (set H1=%%l) && (set F1=%%m) && (set S1=%%n) && (set MS1=%%o))
  30.         for /f "tokens=1,2,3,4,5,6,7 delims=-/:. " %%i in ("%date2%") do ((set Y2=%%i) && (set M2=%%j) && (set D2=%%k) && (set H2=%%l) && (set F2=%%m) && (set S2=%%n) && (set MS2=%%o))
  31.         set /a secs=((d2-32075+1461*(y2+4800+(m2-14)/12)/4+367*(m2-2-(m2-14)/12*12)/12-3*((y2+4900+(m2-14)/12)/100)/4)*86400+H2*3600+F2*60+S2)-((d1-32075+1461*(y1+4800+(m1-14)/12)/4+367*(m1-2-(m1-14)/12*12)/12-3*((y1+4900+(m1-14)/12)/100)/4)*86400+H1*3600+F1*60+S1)
  32.         set /a D=secs/86400,H=(secs%%86400)/3600,M=(secs%%3600)/60,S=secs%%60
  33.         set H=0%H%
  34.         set M=0%M%
  35.         set S=0%S%
  36.         echo %~3        时间:        %H:~-2%h:%M:~-2%m:%S:~-2%s
  37.         exit /b
复制代码
时间的天数没有转换为小时,有点问题。
bat小白,请多指教!谢谢!

TOP

返回列表