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

[日期时间] 批处理怎样根据昨天的日期创建文件夹?

關於Date:
For今天20120507,可利用以下code“%date:~0,4%%date:~5,2%%date:~8,2%”創建,如我想創建比今天早一天20120506日期時,我該如何創建呢?
  1. @echo on
  2. md d:\puch\EM920-12\%date:~0,4%%date:~5,2%%date:~8,2%\FAIL
  3. md d:\puch\EM920-12\%date:~0,4%%date:~5,2%%date:~8,2%\PASS
  4. exit
复制代码

本帖最后由 neorobin 于 2012-5-7 23:44 编辑

回复 1# golden8510
  1. for /f "tokens=1-3 delims=-./ " %%l in ("%date%") do set /a "y=%%l,m=1%%m,d=1%%n-1,m-=!(d-100),y-=!(m-100),d+=!(d-100)*(31-(!(m-104)|!(m-106)|!(m-109)|!(m-111))-!(m-102)*(3-(!(y%%4)&!!(y%%100)|!(y%%400)))),m+=!(m-100)*12")
  2. echo %y%%m:~-2%%d:~-2%
复制代码
以上假设系统的日期格式为 yyyy*MM*dd  其中 * 为 (-./) 三者其中之一,  若非如此, 就需加入识别格式再处理的代码

TOP

回复 2# neorobin
看來有點複雜,還以為還簡單哦!

TOP

回复 3# golden8510


    批处理里面的date命令不像Linux那样可以直接计算,必须自己写算法。

TOP

回复 3# golden8510

代码思路上并不很复杂:

根据日期格式 以 适当的方式 提取出当前日期的 年, 月, 日 三个部分保存进三个变量 y,m,d(这里为了方便后面的格式输 出 m,d 都加上了 100),
将日数 d 减 1, 如果 d 值到了 100, 再将 月数 m 减 1, 如果 m 到了 100, 再将年数 y 减 1,
如果 日数 d 为 100, 将 日数 根据 现在 年数和月数 的结果进行设置: 大月: 31, 小月: 30, 平年 2 月: 28, 闰年 2 月: 29
如果 月数 m 为 100, 将 月数 设为 12.

最后输出: 年数直接输出, 月数 和 日数 取最右边的两位

TOP

返回列表