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

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

[复制链接]
发表于 2012-5-7 22:32:52 | 显示全部楼层 |阅读模式
關於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
复制代码
发表于 2012-5-7 23:41:45 | 显示全部楼层
本帖最后由 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  其中 * 为 (-./) 三者其中之一,  若非如此, 就需加入识别格式再处理的代码
 楼主| 发表于 2012-5-8 22:06:44 | 显示全部楼层
回复 2# neorobin
看來有點複雜,還以為還簡單哦!
发表于 2012-5-8 22:14:52 | 显示全部楼层
回复 3# golden8510


    批处理里面的date命令不像Linux那样可以直接计算,必须自己写算法。
发表于 2012-5-8 22:20:27 | 显示全部楼层
回复 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.

最后输出: 年数直接输出, 月数 和 日数 取最右边的两位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 06:04 , Processed in 0.018045 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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