公司每天需要处理T+1的数据,而操作系统是Windows(也许公司的前辈喜欢Windows吧)。DOS命令相对与Linux Shell,自然是弱爆了。
例如,想要获取上一日的日期,在CMD命令下是非常困难的。最终的解决办法是调用VBS程序,把昨日日期写入临时文件,在再从CMD中读取文件内容,最后删除临时文件。
废话不多说,直接上代码。
@echo off
rem 调用VBS程序获取昨日日期
start /wait mshta vbscript:createobject("scripting.filesystemobject").createtextfile("temp.txt").write(date()-1)(window.close)
set /p a=<temp.txt
echo %a%
rem 日期格式化为yyyymmdd 值得注意的是delims在Win10为-,Win7/Windows Server上面为/
for /f "delims=- tokens=1" %%i in (temp.txt) do set "skp_year=%%i"
for /f "delims=- tokens=2" %%i in (temp.txt) do set "skp_mon=%%i"
for /f "delims=- tokens=3" %%i in (temp.txt) do set "skp_day=%%i"
if %skp_mon% LEQ 9 set skp_mon=0%skp_mon%
if %skp_day% LEQ 9 set skp_day=0%skp_day%
set skp_date=%skp_year%%skp_mon%%skp_day%
echo %skp_date%
del temp.txt
pause