2

Windows Server 2003 サーバーで Robocopy コマンドを使用して、一連の EDB ファイルをユーザー ワークステーションからサーバー上の特別なフォルダーにコピーしています。robocopy コマンドを午前中に 1 回、午後に 1 回、2 回実行したいと考えています。

これを行う方法を知っている方法は、異なる時間に実行するようにスケジュールされた 2 つの独立したバッチ ファイルを作成することです。各バッチは、EDB を異なるディレクトリにコピーします。

しかし、次の方法で1つのバッチファイルでこれを実行できるはずだと思いました。

  1. 現在時刻を確認します。
  2. 午後 12 時前か午後 12 時以降かを確認してください。
  3. 午後 12 時前の場合は、次の一連の Robocopy コマンドを実行します。
  4. 午後 12 時以降の場合は、他の一連の Robocopy コマンドを実行します。

2 つのバッチ ファイルを使用して、私が知っている方法でこれを実装します。他の方法でそれを行う方法を学びたいと思います。私は、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

robocopyPowershellでコマンドを実行するために、凝ったトリックは必要ありません。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 に答える