Как использовать xcopy только для копирования файлов, если они новее?
У меня есть много веб-приложений в решении Visual Studio.
У всех одинаковая команда пост сборки:
xcopy "$(TargetDir)*.dll" "D:\Project\bin" /i /d /y
Было бы полезно не заменять новые файлы старыми (например, кто-то может случайно добавить ссылку на старую версию DLL).
Как я могу использовать xcopy для замены старых файлов только на новые DLL-файлы, созданные Visual Studio?
2 ответа
Набрав "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
переключатели.
Пользователь выполняет следующую команду, чтобы скопировать все новые и измененные файлы из источника в место назначения
xcopy c:\ источник d:\ назначение / D /I /E /Y
/ D для проверки наличия любого измененного файла
/I Если место назначения не существует и копируется более одного файла, предполагается, что это место назначения должно быть каталогом.
/ E Для копирования каталога и подкаталогов
/Y для подавления любого запроса на перезапись.
Не проверено, но я использую подобный командный скрипт для такого рода задач.
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