2

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

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

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

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

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

4

3 回答 3

4

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

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

您可以robocopy在 Powershell 中运行命令而无需任何花哨的技巧。这是一个关于 robocopy 的问题的链接。
至于调度任务,此链接 将向您展示如何使用任务调度程序调度 powershell 脚本。
要获得其他任何东西,您将不得不进行一些试验和错误,然后带着失败或障碍回来以获得更多帮助。

于 2013-01-31T16:29:52.857 回答
3

另一种可能:

Switch ((get-date).tostring('tt')) 
 {
   'AM' {'Morning script'}
   'PM' {'Afternoon script'}
 }
于 2013-01-31T18:58:41.703 回答
2

你可以使用这样的东西

set t=%time:0,2%
if %t% lss 12 (
REM First set of robocopy commands here
) else (
REM Second set of robocopy commands here
)
于 2013-01-31T16:26:28.283 回答