2012年11月18日日曜日

[Script][BAT]ディレクトリツリーのコピー(xcopy)

ディレクトリツリーをコピーします。

フォルダ構成そのままディレクトリごとコピーする
xcopy   d:¥src¥*   d:¥dst¥   /e   /y
:: /e はディレクトリ、サブディレクトリをコピーする。
:: /y は上書き確認のメッセージを表示しないためのスイッチ。

必要なファイルだけコピーする
:: 変更されていなければ上書きしない
xcopy   /s/m   *   d:¥dst¥
:: /s はディレクトリ、サブディレクトリをコピーする(ただし空のディレクトリは作らない)。
:: /m はアーカイブ属性が設定されているファイルのみをコピーし、アーカイブ属性を解除する。

:: 相手先のファイルよりコピー元のファイルの更新日付が新しければ相手にコピーする。
:: コピー元が古ければ何もしない。
xcopy   /d   d:¥temp¥*.exe   d:¥work¥

前回実行時から更新されたファイルをコピーするスクリプト
::
:: 前回実行時から更新されたファイルをコピーするスクリプト
::
:: backup_date ファイルには 前回実行した日付が格納されている
::
:: 例)
::   05-19-2012
::
set backup_date_file=D:\tool\backup_date
set backup_source=D:\syslog
set backup_target=\\log_server\D$\syslog_archive

:::::::::::::::::::::
:: 最終実施日を取得
:::::::::::::::::::::
FOR /F "eol=; tokens=1* delims=," %%i in ( %backup_date_file% ) do (
set backup_date=%%i
)

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 前回このバッチを実施してから更新されたファイルをコピー
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
xcopy %backup_source% %backup_target% /E /Q /Y /D:%backup_date%

:::::::::::::::::::::::::::::::::::::
:: 今日の日付を最終実施日として保存
:::::::::::::::::::::::::::::::::::::
:: backup_date -> mm-dd-yyyy
echo %date:~7,2%-%date:~10,2%-%date:~2,4% > %backup_date_file%
参考:


Script のページに戻る

0 件のコメント:

コメントを投稿