Luk*_*e T 4 variables scripting loops batch-file
我通过批处理文件运行报告,目前我有一个消息框提示,允许我输入我想要运行报告的日期,这样可以正常工作并将变量设置为输入日期.
我怎么试图进一步自动化这个.
例如,我想运行此报告从060114到120114(MMDDYY)我想使用循环函数,以便运行批处理的脚本将运行范围中的每个日期,一旦到达结束日期转到批处理文件的下一部分.
例如,第一部分使用输入的日期并分配给变量%b
我为日期范围设置了两个提示,从日期将分配给变量%c,结束日期将分配给%d.
日期正确分配给变量,使用循环函数的最佳方法是什么
提前干杯
卢克..
处理日期的最佳方法不是重新发明轮子.Batch/CMD没有日期概念,因此要遍历日历日期需要自己实现(包括月份长度,闰年检查等).
对于此任务,我建议使用脚本语言,如PowerShell.此脚本daterange.ps1生成指定的两个日期之间的日期列表(包括).
param(
[String]
$DateStart,
[String]
$DateFinish
)
Function ParseDateStr {
param(
[String]
$s
)
return Get-Date `
-Month $s.substring(0,2) `
-Day $s.substring(2,2) `
-Year ('20'+$s.substring(4,2)) `
-Hour 0 -Minute 0 -Second 0
}
$start = ( ParseDateStr $DateStart )
$finish = ( ParseDateStr $DateFinish )
$delta = New-TimeSpan -Days 1
for ($d = $start; $d -le $finish; $d +=$delta) {
Write-Host $d.toString("MMddyy")
}
Run Code Online (Sandbox Code Playgroud)
它可以在批处理文件中使用,例如:
@ECHO OFF
SETLOCAL
SET /P STARTDATE=Starting date:
SET /P ENDDATE=Ending date:
FOR /F %%d IN ('powershell -NoProfile -ExecutionPolicy Bypass -File daterange.ps1 %STARTDATE% %ENDDATE%') DO (
@ECHO %%d
)
Run Code Online (Sandbox Code Playgroud)
循环变量%d将为范围中的每一天提供正确格式化的日期.
例如:
C:\temp>sol
Starting date: 022716
Ending date: 030116
022716
022816
022916
030116
Run Code Online (Sandbox Code Playgroud)