web-dev-qa-db-fra.com

Comment utiliser xcopy pour copier uniquement des fichiers s'ils sont plus récents?

J'ai de nombreuses applications Web dans une solution Visual Studio.

Tous ont la même commande post-build:

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

Il serait utile d'éviter de remplacer des fichiers plus récents par des anciens (par exemple, quelqu'un pourrait accidentellement ajouter une référence à une ancienne version d'une DLL).

Comment puis-je utiliser xcopy pour remplacer les anciens fichiers uniquement par plus récent DLL fichiers généré par Visual Studio?

26
Junior M

En tapant "help xcopy" sur la ligne de commande:

/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.

Vous utilisez donc déjà xcopy pour remplacer uniquement les anciens fichiers par de nouveaux. Si cela ne se produit pas, vous devrez peut-être échanger les positions du /i et /d commutateurs.

31
JAB

Non testé, mais j'utilise un script de commande similaire pour ce genre de tâches.

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