需要帮助使用 windows 批处理脚本查找上一年

Need help to find previous year using windows Batch Script

您好需要一些帮助来查找上一年,使用 windows 批处理代码

我使用的代码是

:: This is Code for D3
@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 "PREVYEAR=%result:~0,4%-%1%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
SET YEAR=%DATE:~-4%
set "filename=%mm%%dd%%yyyy%"
echo "E:\Data Loads Folder\SafetyAndSecurity\D3\QVD\*%YYYY%_%filename%.QVD"
echo "E:\Data Loads Folder\SafetyAndSecurity\D3\QVD\*%PREVYEAR%_%filename%.QVD"
pause

这给出了一个输出

"E:\Data Loads Folder\SafetyAndSecurity\D3\QVD\*2017_11152017.QVD"
"E:\Data Loads Folder\SafetyAndSecurity\D3\QVD\*2017-_11152017.QVD"

我需要一些建议如何找到前一年,变量 PREVYEAR 的输出应该是 2016

您根本不需要 Vbscript 来执行此操作。虽然它确实有帮助,甚至 Powershell 也是一个好主意,但您可以使用 WMIC 和 Batch 完成这一切。

@echo off

REM Get Date and Time regardless of regional setttings
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"

REM Set year month and day into its own variables.
set "yyyy=%dt:~0,4%"
set "mm=%dt:~4,2%"
set "dd=%dt:~6,2%"

REM Subtract year
set /a "yyyy-=1"

你可以用一行批处理来做到这一点

set /a "PREVYEAR=%date:~9,4%-1"

将 PREVYEAR 设置为 2016

与 Squashman 不同,我不喜欢 Powershell,请查看 Ruby 以查找 vbscript 替代品。

在 Ruby 这将是

Time.now.year-1
#=> 2016