【问题标题】:Checking Time and executing different instrcutions based on hour检查时间并根据小时执行不同的指令
【发布时间】:2013-01-15 19:36:57
【问题描述】:

我在 Windows Server 2003 服务器上使用 Robocopy 命令将一系列 EDB 文件从用户工作站复制到服务器的特殊文件夹中。我想运行 robocopy 命令两次,一次在上午,一次在下午。

我知道如何做到这一点的方法是编写两个独立的批处理文件,这些文件计划在不同的时间运行。每个批次都会将 EDB 复制到不同的目录。

但我想到我应该可以通过以下方式在一个批处理文件中执行此操作:

  1. 检查当前时间。
  2. 请注意是在下午 1200 点之前还是在下午 1200 点之后。
  3. 如果是在下午 1200 点之前,请运行这组 Robocopy 命令。
  4. 如果是在下午 1200 点之后,请运行另一组 Robocopy 命令。

我将使用两个批处理文件以我知道的方式来实现它。我想学习如何以其他方式做到这一点。我愿意以任何方式这样做——Powershell、Python 等。诚然,我对在这个生产服务器上安装我通常不需要安装的任何东西持怀疑态度。例如,我可以安装 Python,但它只用于这项工作,这似乎有点矫枉过正。 (请随意拒绝我!)

【问题讨论】:

    标签: powershell if-statement scripting batch-file


    【解决方案1】:

    可能有几种方法可以满足您的要求。第一部分,根据一天中的时间运行不同的代码非常简单。就用这个吧:

    if ( (Get-Date -UFormat %p) -eq "AM" ) {
        <Code if doing before noon> 
        } #End if
    else {
        <code if doing after noon>
        } #end else
    

    您可以在 Powershell 中运行robocopy 命令,而无需任何花哨的技巧。 Here is a link to a question about robocopy.
    至于调度任务,this link 将向您展示如何使用任务调度程序调度 powershell 脚本。
    要获得其他任何东西,您将不得不进行一些试验和错误,然后带着失败或障碍回来以获得更多帮助。

    【讨论】:

    • 你也可以使用if ((get-date).hour -le 12) {...}
    • 是的,先生,有几种方法可以满足他的要求。使用任务调度,他可以把robocopy命令安排在早上,下午再安排,不需要直接编写脚本。
    • 我是否在担心我是否应该应该在 Powershell 和 DOS 脚本批处理中执行此操作?
    • 并非如此。通过将 Powershell 用于此类操作,您将在开始执行更复杂的任务时熟悉它。 Powershell 对于大多数日常活动都非常有用,并且像大多数事情一样,最好从像这样的较小任务开始。一旦您完成了简单的 robocopy 操作,您可能会发现您想要对副本执行的其他操作。由于您已经有一个脚本,因此只需进行简单的更改,而不是从头开始。随着您越来越熟悉,您将开始编写其他职责的脚本,从而使您的工作更轻松/更高效。
    • 感谢您的回答,尼克。 :-) 非常感谢。我会玩弄你的想法。
    【解决方案2】:

    另一种可能性:

    Switch ((get-date).tostring('tt')) 
     {
       'AM' {'Morning script'}
       'PM' {'Afternoon script'}
     }
    

    【讨论】:

    • +1 国际使用:(get-date).tostring('tt', [System.Globalization.CultureInfo]::InvariantCulture )... 就因为我在意大利 ;)
    【解决方案3】:

    你可以使用这样的东西

    set t=%time:0,2%
    if %t% lss 12 (
    REM First set of robocopy commands here
    ) else (
    REM Second set of robocopy commands here
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      相关资源
      最近更新 更多