« 同じ木構造で比較先ディレクトリに同一ファイルがあるものを比較元ディレクトリから削除する。 | トップページ | 同じ木構造で比較先ディレクトリに同名ファイルがないものを比較元ディレクトリから削除する。 »

2006年11月15日 (水)

同じ木構造でコピー先ディレクトリに同名ファイルがないものだけをコピーする。

昔はツールを使って「find dir1 -t -^exists dir2 -cp dir2」で簡単に出来たのですが、
ツールがLFNに対応してないため、これに代わるバッチファイルを作ってみました。

使用法: FindNotExistsCp.CMD コピー元ディレクトリ コピー先ディレクトリ

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%0 IN (%1) DO (
FOR /R %1 %%1 IN (*) DO (
SET x=%%~f1
SET x=!x:%%~f0=%2!
IF NOT EXIST "!x!" (
IF NOT EXIST "!x!\..\*" (
echo MD "!x!\.."
)
echo COPY "%%~f1" "!x!"
)
)
)

念のため、MD/COPYコマンドはechoでコメントにしてあります。
各自のシステム環境で十分テストした上でコメントを外してください。

« 同じ木構造で比較先ディレクトリに同一ファイルがあるものを比較元ディレクトリから削除する。 | トップページ | 同じ木構造で比較先ディレクトリに同名ファイルがないものを比較元ディレクトリから削除する。 »