我们有一个运行月末流程的批处理文件。现在它是一个手动过程,但我们希望根据EOM何时降低自动化过程。如果该月的最后一个工作日是星期五(或其他工作日),我们将在星期五晚上或星期六运行该脚本。如果是周六或周日,脚本将在周末后的周一运行。可能有一些例外,但这是一般的想法。
我们无法确定如何根据日期自动执行此操作。任何选项都将被考虑。 Powershell,批次等......
非常感谢任何帮助。
编辑 - 它选择运行的日期可能有点随机。如果我们可以在一个文本文件中读取它,其中包含一个可以运行的日期列表。
所以我们可以有一个日期列表,如: 2015年4月30日, 2015年5月31日, 2015年6月29日,
然后可以运行一个脚本,说明如果今天等于任何这些日期,则运行批处理文件。
答案 0 :(得分:0)
逻辑对我来说并不完全清楚,但正如上面的评论中所述,您可以每天(或仅周五/周一)使用Windows任务计划程序运行PowerShell脚本并让该脚本检查是否做某事是时候了。
据我所知,它必须在周五或周一运行。
您可以使用Get-Date
命令在PowerShell中获取当前日期。
如果你通过Get-Member
传递这个,你可以看到日期对象上的所有方法,以确定时间是否正确。
get-date | get-member
您可能需要这样的方法或属性来实现检查:
$today = get-date
$today.DayOfWeek # prints e.g. "Monday"
$today.DayOfWeek -eq 1 # Returns True on Monday
$today.AddDays(1) # Next day, the number can be negative or positive
$today.Day # Returns 6 right now (april 6th)
答案 1 :(得分:0)
有很多资源可以讨论调用PowerShell script in Task Scheduler。如果您当前所执行的操作是批处理,则将您的任务配置为每天下午5:00运行,并根据文本文件中的所有日期检查日期。
$milestones = Get-Content c:\temp\dates.txt
$today = Get-Date -Format "MM-dd-yyyy"
If($milestones -contains $today){
# Do stuff and things.
# cmd.exe /K C:\Path\To\Batch.bat
}
如果文本文件中有一行" c:\ temp \ dates.txt" for" 04-06-2015"这将满足If
条件。然后,您可以使用cmd
取消注释该行,并根据需要进行更新。
如果您对这些概念有疑问,可以在询问前进行一些研究。如果您在此之后仍然被困,请编辑您提出新问题的问题。