本人是个比较懒的人,所以很多事情,即使每次花不了多少时间解决的事情,我都会选择写个小DOS批处理解决(没事就装下13呗…),虽然不怎么精通,但关键在于爱好。。
好了,下面是正文。
已知,目标目录下有一个以日期为文件名的Excel,要修改成当天的日期。
(好吧,我承认,这就是日报,每天改来改去的,就替换个日期,MMP。。)
那要如何操作双击一下自动修改成今天日期呢,找了下度娘,结合自己修改下,得出如下代码:
方案一:
@echo off
set DaysAgo=1
//设置昨天为1
set Today=%date:~0,4%%date:~5,2%%date:~8,2%
//设置今天日期,取值为今天的日期,不懂的自行在DOS里输入 echo %date%
set /a PassDays=%Today%-1
//计算昨天日期
ren 测试日报(%PassDays:~4,2%-%PassDays:~6,2%_王尼玛).xlsx 测试日报(%Today:~4,2%-%Today:~6,2%_王尼玛).xlsx & 测试日报(%Today:~4,2%-%Today:~6,2%_王尼玛).xlsx || goto :gg
//修改好日期之后顺便打开它,如果找不到当前日期的,则退出
exit
:gg
然后事实证明,在周二至周五时,确实好用,但是周一的话,日期就不对了,原理是只是修改当前日期减去一天的时间,周末双休,自然找不到礼拜天的。(毕竟没上班。。)
然后深思熟虑下,自己修改出了方案二,如下
echo.
echo.
echo 方案一失败 ,启动备用方案二 !
for /f "delims=" %%a in ('dir /b ^| find ".xlsx" ^| find "测试日报" ') do set "var=%%a"
**//此处要加粗,在for循环里括号写的某些符号需要用转义符"^",否则dos不识别**
**//而不在for循环括号的则不用加转义符"^",否则,系统也会识别不了**
**//(测试系统win10)**
ren %var% 测试日报(%Today:~4,2%-%Today:~6,2%_王尼玛).xlsx
dir /b | find "测试日报" | clip
//最后还要把文件名复制下,放到粘贴板里面,因为钉钉上传文件太…… 呵呵了。
如果方案一失败,说明当天是周一,那就直接查询就好了,for循环一下查找(至于为什么用for循环,我也忘记了,估计当时为了装13嫌疑。。)
dir /b,find,就不多做解释了,至于 set “var=%%a”,那会是不知道找到名称后怎么操作,就只能直接放到临时变量里面,然后再修改名称,就这样,两段结合,完美。。
PS:需要代码的自行搜索标题,顺便自己添加最后一句粘贴板内容。~~