找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26489|回复: 6

[日期时间] [已解决]批处理计算日期goto :eof的问题,求解答

[复制链接]
发表于 2019-10-27 09:02:08 | 显示全部楼层 |阅读模式
本帖最后由 科零仿佛 于 2019-10-30 00:53 编辑
  1. @echo off &setlocal ENABLEEXTENSIONS
  2. for /f "tokens=1-3 delims=/-, " %%a in ('echo/%1') do (
  3.   set yy=%%a & set mm=%%b & set dd=%%c
  4. )
  5. set /a dd=100%dd%%%100,mm=100%mm%%%100
  6. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  7. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  8. endlocal&set %2=%j%&goto :EOF
复制代码
 楼主| 发表于 2019-10-27 09:03:10 | 显示全部楼层
为什么要在最后加一个goto :eof呢,这样不是没意义吗
发表于 2019-10-27 16:32:51 | 显示全部楼层
这个应该是计算日期的“函数”,“函数”的调用者不一定把它放到脚本最后面,可能放在脚本中间。加 goto:eof 很有必要。
 楼主| 发表于 2019-10-28 08:05:52 | 显示全部楼层
回复 3# WHY


    额,又去看了一下,好像是这样,大佬能再解释下
  1. set /a dd=100%dd%%%100,mm=100%mm%%%100
复制代码
左右都加一个100是干嘛用的
发表于 2019-10-28 08:59:04 | 显示全部楼层
本帖最后由 WHY 于 2019-10-28 09:00 编辑

回复 4# 科零仿佛


    set /a dd=100%dd% %% 100
主要目的是去掉前面的 0,比如原来的变量 dd 为 08, 处理后 dd 为 8,避免后面的 set /a 计算报错。
 楼主| 发表于 2019-10-28 20:22:11 | 显示全部楼层
回复 5# WHY


    能讲一下里面具体的原理吗,为什么加个100就可以去掉那个0,我还是没看懂
发表于 2019-10-28 21:29:41 | 显示全部楼层
回复 6# 科零仿佛


比如原来的变量 dd 为 08
它不是加个100变成108
而是10008 也就是一万零8
然后 10008 % 100 也就是对100取余数得到数字8

评分

参与人数 1技术 +1 收起 理由
科零仿佛 + 1 受教了,谢谢

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 13:08 , Processed in 0.028488 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表