Question: I have many web applications in a Visual Studio solution.

All have the same post build command:

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

```

It would be useful to avoid replacing newer files with old ones (e.g. someone could accidentally add a reference to an old version of a DLL).

How can I use xcopy to replace old files only with **newer DLL files** generated by Visual Studio?

Answer: 
From typing "help xcopy" at the command line:

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

```

So you already are using xcopy to only replace old files with new ones. If that's not happening, you may have to swap the positions of the `/i` and `/d` switches.
Not tested, but I use a similar command script for these sorts of tasks.

```
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

```