标题: [文本处理] 批处理如何按日期重命名文件名? [打印本页]
作者: 7016427 时间: 2014-10-31 13:30 标题: 批处理如何按日期重命名文件名?
以下批处理文件执行后,错误命名文件名为:客运月报[1904年110月].xls,正确应该命名为:客运月报[2014年10月].xls,请问怎么修改?- @echo off
-
- set /a "N=%date:~,4%,m=(1%date:~5,2%-90)%%12+101,N-=m-1/112"
- set wj=[%N%年%m%月]
-
- if "%date:~8,2%"=="01" ren d:\客运月报\客运月报.xls 客运月报%wj%.xls
-
- echo 按任意键退出......
- pause>nul
复制代码
作者: Batcher 时间: 2014-10-31 14:03
打开一个命令行窗口,执行:
echo %date%
把结果发出来看看
作者: 7016427 时间: 2014-10-31 20:35
请老师帮我看看
作者: 7016427 时间: 2014-10-31 20:39
回复 3# 7016427
请老师帮我看看,能否解决!
作者: 7016427 时间: 2014-10-31 20:42
回复 2# Batcher
请老师帮我看看,能否解决!
作者: 7016427 时间: 2014-10-31 20:44
回复 2# Batcher
echo %date%
执行的结果是:2014-10-31 星期五
作者: nnszuo 时间: 2014-11-1 09:39
把%date%截取就可以了- echo %date:~0,4%年%date:~5,2%月
复制代码
作者: 7016427 时间: 2014-11-1 13:29
回复 7# nnszuo
老师你好!获取的结果:2014年11月
作者: 7016427 时间: 2014-11-1 20:05
回复 7# nnszuo
2014年11月1日,我要取上月(2014年10月)怎么改?
作者: nnszuo 时间: 2014-11-2 16:25
最简单的这样复制代码
也可以这样- set y=%date:~5,2%
- set /a y-=1
- echo %date:~0,4%年%y%月
复制代码
作者: DAIC 时间: 2014-11-2 21:15
回复 10# nnszuo
日期的计算不能这样做,你让一月份情何以堪?
作者: nnszuo 时间: 2014-11-3 19:03
本帖最后由 nnszuo 于 2014-11-3 19:20 编辑
这个问题被我忽略了,还有就是1-9月份的时候前面有个0,这是修改后的- set y=1%date:~5,2%
- set k=%date:~0,4%
- if "%y%"=="101" (set /a y+=12&set /a k-=1)
- set /a y-=1
- echo %k%年%y:~1,2%月
复制代码
作者: apang 时间: 2014-11-3 20:31
楼主可谓奇才,免费参观哦
http://www.bathome.net/thread-31353-1-1.html
作者: terse 时间: 2014-11-4 00:28
回复 1# 7016427
楼主是想这样结果吧- set /a "N=%date:~,4%,m=(1%date:~5,2%-90)%%12+101,N-=m/112"
- set wj=[%N%年%m:~-2%月]
复制代码
作者: 7016427 时间: 2014-11-4 12:38
回复 14# terse
老师你好!测试成功!非常感谢!还要麻烦老师帮我解释你这个代码的意思!
作者: 7016427 时间: 2014-11-6 12:49
回复 12# nnszuo
????谁能解释
set y=1%date:~5,2%
set k=%date:~0,4%
if "%y%"=="101" (set /a y+=12&set /a k-=1)
set /a y-=1
echo %k%年%y:~1,2%月
作者: wbwchina 时间: 2014-11-8 13:22
受到启发,感谢楼主!交个作业,做个日期为:年月日- echo %date:~0,4%年%date:~5,2%月%date:~8,2%日
复制代码
作者: 7016427 时间: 2014-11-8 14:51
回复 17# wbwchina
获取当前日期我知道,我不知道获取上月的算法?因此,请教老师以下代码每一句的意思:
set y=1%date:~5,2%
set k=%date:~0,4%
if "%y%"=="101" (set /a y+=12&set /a k-=1)
set /a y-=1
echo %k%年%y:~1,2%月
作者: nnszuo 时间: 2014-11-9 13:49
本帖最后由 nnszuo 于 2014-11-9 13:57 编辑
回复 7016427
楼主是想这样结果吧
terse 发表于 2014-11-4 00:28
看了这个取上月的批处理太受打击了,通过变量就能取月份,还是这么精简的代码
重做了个批处理,虽然代码还很多水平有限没办法再精简了- @echo off
- set /a k=1%date:~5,2%-1
- set /a y=%k%/101*%k%+100/%k%*112
- set /a n=%date:~0,4%-100/%k%
- echo %n%年%y:~1,2%月
- pause
复制代码
这个衍生出来的取上N个月的- @echo off
- set /p d=请输入你要减去的月份:
- set /a k=1%date:~5,2%-%d%%%12
- set /a y=%k%/101*%k%+100/%k%*(%k%+12)
- set /a n=%date:~0,4%-%d%/12-100/%k%
- echo %n%年%y:~1,2%月
- pause
复制代码
作者: 7016427 时间: 2014-11-9 21:04
回复 19# nnszuo
辛苦了!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |