我当前运行以下脚本来获取当前日期减去1和当前月份。除每个月的8号和每年的8月外,它适用于所有日期和月份。我必须将脚本更改为手动设置为8月。有谁知道为什么,并且有修复程序。
SET m=%date:~4,2%
SET /A m -= 1
SET m=0%m%
REM ****** SET m=08 this was used because the date was not right ******
REM SET m=08
SET currMon=%date:~4,2%/%date:~10,4%
REM ****** SET PriorMon=12/2017 this was used for Year End because the date was not right ******
REM SET PriorMon=08/2018
SET PriorMon=%m:~-2%/%date:~10,4%
答案 0 :(得分:1)
这是混合的 vb / batch 脚本。这是获取日期 Workbook w = new XSSFWorkbook();
CreationHelper createHelper = w.getCreationHelper();
CellStyle cs = w.createCellStyle();
cs.setDataFormat(createHelper.createDataFormat().getFormat("HH:mm"));
Sheet sheet = w.createSheet(String.valueOf("Format Test"));
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellStyle(cs);
cell.setCellValue(new Date());
File outFile = new File("Test.xlsx");
try {
FileOutputStream fileOut = new FileOutputStream(outFile);
w.write(fileOut);
} catch (IOException ex) {
// do something with exception data
}
或所需的任意天数的正确方法:
-1
我只是在这里回显最终结果,就今天的日期而言(对我来说,这是7日)应该回显@echo off
set day=-1
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\*%~n0.vbs"
set "yyyy=%result:~0,4%"
set "mm=%result:~4,2%"
set "dd=%result:~6,2%"
set "final=%dd%-%mm%-%yyyy%"
echo %final%
您可以根据自己的日期更改06-09-2018
的格式。
答案 1 :(得分:0)
在纯批次are possible中进行正确的日期计算,但很麻烦。 您的方法依赖于可能未知的区域设置/用户设置相关的日期格式。
从Powershell的Win7中可以使用以下工具:
在cmd行上:
For /f "usebackq" %A in (`powershell -Nop -C "(Get-Date).AddDays(-1).ToString('MM\/yyyy')"`) Do Set Yesterday=%A
在批处理文件中:
For /f "usebackq" %%A in (`
powershell -Nop -C "(Get-Date).AddDays(-1).ToString('MM\/yyyy')"
`) Do Set Yesterday=%%A
Echo Yesterday=%Yesterday%
根据自己的喜好修改格式字符串:
dd = day 2 places
MM = month 2 places
yyyy = year 4 places
其他字符必须以反斜杠转义。