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

Batch file 需要使用windows批处理脚本查找上一年的帮助吗,batch-file,vbscript,batch-processing,Batch File,Vbscript,Batch Processing,您好,使用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

您好,使用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"

您根本不需要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"
这将把今年定为2016年

与Squashman不同,我不喜欢Powershell,请看一下Ruby的vbscript替代品

在Ruby中,这将是

Time.now.year-1
#=> 2016

您可以使用一行批处理来完成此操作

set /a "PREVYEAR=%date:~9,4%-1"
这将把今年定为2016年

与Squashman不同,我不喜欢Powershell,请看一下Ruby的vbscript替代品

在Ruby中,这将是

Time.now.year-1
#=> 2016

DOS
标记不相关。这不是
DOS
。您的批处理文件正在创建vbscript,然后执行vbscript。好的,谢谢我删除了它
DOS
标记不相关。这不是
DOS
。您的批处理文件正在创建vbscript,然后执行vbscript。好的,谢谢我删除了它。批处理文件代码的唯一问题是它依赖于区域。不同国家/地区的人的日期格式顺序不同。批处理文件代码的唯一问题是它取决于地区。不同国家的人的日期格式顺序不同。