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

[日期时间] 谁能帮我解释这个月份计算的批处理?

  1. set y=1%date:~5,2%
  2. set k=%date:~0,4%
  3. if "%y%"=="101" (set /a y+=12&set /a k-=1)
  4. set /a y-=1
  5. echo %k%年%y:~1,2%月
复制代码

不明白这个批处理想干嘛,从内容上看有点像根据当前日期获取阴历年月,但这个有很多因素没考虑进去,可以说在特定情况下才能用。

TOP

回复 2# amwfjhh


    跟阴历没有关系。代码的作用是计算上个月

TOP

对,准确的说应该是计算上个月所在年月。用来推测阴历还差一大截,闰年闰月等各种情况要考虑到。

TOP

回复 4# amwfjhh

你好!是推算上月月份,我想学习。但是,我不知道每句代码的意思。哪位老师能帮我解释?

TOP

回复 5# 7016427


    这个就是基础的SET命令用法哈,你可以去论坛搜下相关贴子,对于批处理,FOR与SET是须要掌握的,这两个基本会用了,才算批处理入门了。
具体到这个代码我大概说下里面用到的特点,你对照教学贴自己看下嘛,第一,二,五句是用的SET字符截取功能,第三,四句用的是SET的赋值功能。
详情你可以SET /?然后论坛搜索教学贴。

TOP

回复 6# amwfjhh

你好!再请教老师,以下问题:
set y=1%date:~5,2%   这句1代表什么意思?
set k=%date:~0,4%
if "%y%"=="101" (set /a y+=12&set /a k-=1)  这句101、12各代表什么意思?
set /a y-=1
echo %k%年%y:~1,2%月 这句1,2% 代表什么意思?

TOP

~表示偏移,第一个字符偏移量为0,第二个为1,依次类推,因素第一句表示从当前日期中取出第6位起的两个字符,这个批处理有个前提,就是系统日期格式应为2014-11-08或2014/11/08的格式,那么这句取出来的就是月份了。由于要算上个月是多少,所以对于当前月份为1月时要作特殊处理,故有后面的加减运算。

TOP

回复 8# amwfjhh

if "%y%"=="101" (set /a y+=12&set /a k-=1)  这句101、12各代表什么意思?

TOP

就是上一个回答的最后一句,对月份的特殊处理,取值时在前放加了个1,因此如为1月就为101。加12是为了防止做减法时数据超出合理范围,因为后面对月份又作了次截取字符处理,不加12就会得出00月的结果。其实用这个00也能进行判断。

TOP

回复 10# amwfjhh
谢谢指导!

TOP

返回列表