0

Windows ボックスでスケジュールされたバッチ ジョブとしてログ ファイルをコピーできるようにジョブを設定しています。

マシン A の現在のディレクトリは次のとおりです。

Logs\   YYYYMMDD\   Logfile1.log
                    Logfile2.log
                    Logfile3.log

通常、このマシンには 3 日分のログが常に保持されています。

このコマンドを使用して、Robocopy ジョブを別のサーバー (マシン B) でスケジュールされたタスクとしてセットアップし、ファイルをマシン B にコピーしますが、既にコピーされているものは移動しません...

Robocopy "\\machineA\Logs" "\\machineB\LOGSTORAGE\machineA\Logs" /s /zb /r:2 /w:2 /eta /LOG+:\\machineB\LOGSTORAGE\logmove.log /TEE

私が望むのは、マシン A でファイルを圧縮してから、それらをコピーするのではなく移動し、移動後にジョブによって重複した zip ファイルが作成されないようにすることです。

フォルダー構造を別の場所に再作成し、これを共有して、マシン B がフォルダーにそのままアクセスできるようにすることもできますが、以下のようにコンテンツとして zip ファイルを使用します。

Logs\       YYYYMMDD\       Logfile1.zip
                            Logfile2.zip
                            Logfile3.zip

理想的には、7Zip やその他の圧縮ソフトウェアをインストールする必要なく、Windows を使用して zip を実行したいと考えています。このページでは、仕事をするために PowerShell について言及していますが、これを自分の要件に合わせて編集する方法がわかりません。

マシンには常に 3 日分のログが存在する可能性が高いため、zip ジョブが、まだ最終的な宛先に移動されていないファイルのみを圧縮するようにする方法はありますか?

誰でもこれで私を助けることができますか?

4

2 に答える 2

1

長い時間が経ちましたが、フォルダー全体を圧縮するという要件を変更することになりました. 最終的には、一時ディレクトリを作成せずにフォルダーを zip 圧縮し、Robocopy を使用してマシン B にファイルを取得させる方が簡単でした。

最後に使ったのはこれ

@echo off
for /d %%x in ("C:\Program Files\Logs\*.*") do start "C:\Program Files\7-Zip\7z.exe" /b /low /wait "C:\Program Files\7-Zip\7z.exe" a -tzip "%%x.zip" "%%x\"
于 2014-10-03T14:23:09.723 に答える