簡體   English   中英

需要幫助以使用Windows Batch Script查找上一年

[英]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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM