根据月末自动化批处理脚本

时间:2015-04-06 18:15:32

标签: powershell batch-file automation scheduled-tasks

我们有一个运行月末流程的批处理文件。现在它是一个手动过程,但我们希望根据EOM何时降低自动化过程。如果该月的最后一个工作日是星期五(或其他工作日),我们将在星期五晚上或星期六运行该脚本。如果是周六或周日,脚本将在周末后的周一运行。可能有一些例外,但这是一般的想法。

我们无法确定如何根据日期自动执行此操作。任何选项都将被考虑。 Powershell,批次等......

非常感谢任何帮助。

编辑 - 它选择运行的日期可能有点随机。如果我们可以在一个文本文件中读取它,其中包含一个可以运行的日期列表。

所以我们可以有一个日期列表,如: 2015年4月30日, 2015年5月31日, 2015年6月29日,

然后可以运行一个脚本,说明如果今天等于任何这些日期,则运行批处理文件。

2 个答案:

答案 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取消注释该行,并根据需要进行更新。

如果您对这些概念有疑问,可以在询问前进行一些研究。如果您在此之后仍然被困,请编辑您提出新问题的问题。