web-dev-qa-db-ja.com

xcopyを使用して、ファイルが新しい場合にのみファイルをコピーする方法

Visual Studioソリューションには多くのWebアプリケーションがあります。

すべてに同じビルド後コマンドがあります:

xcopy "$(TargetDir)*.dll" "D:\Project\bin" /i /d /y

新しいファイルを古いファイルに置き換えないようにすると便利です(たとえば、誰かが誤って古いバージョンのDLLへの参照を追加する可能性があります)。

Xcopyを使用して古いファイルをnewer DLL files Visual Studioによって生成されたもの)のみで置き換えるにはどうすればよいですか?

26
Junior M

コマンドラインで「help xcopy」と入力すると、次のようになります。

/D:m-d-y     Copies files changed on or after the specified date.
             If no date is given, copies only those files whose
             source time is newer than the destination time.

そのため、xcopyを使用して古いファイルのみを新しいファイルに置き換えています。それが起こらない場合、/i/dスイッチの位置を入れ替える必要があるかもしれません。

31
JAB

テストされていませんが、この種のタスクには同様のコマンドスクリプトを使用しています。

set DIR_DEST=D:\Project\bin
pushd "$(TargetDir)"

::
:: Move Files matching pattern and delete them
::
for %%g in (*.dll) do (xcopy "%%g" "%DIR_DEST%" /D /Y & del "%%g")

::
:: Move Files matching pattern
::
:: for %%g in (*.dll) do (xcopy "%%g" "%DIR_DEST%" /D /Y )

popd
0
Jim