Ежедневная запланированная задача Windows запускает пакетный сценарий, который перемещает файлы программы в папку на сервере, используя простую процедуру копирования.
rem deploy programfiles
copy dailybuild\*.dll "\\myserver\programfiles" /Y
copy dailybuild\*.exe "\\myserver\programfiles" /Y
Это работает нормально, если только кто-то на самом деле не запускает исполняемый файл, что приводит к сбою копии из-за заблокированного файла.
Поскольку это находится на сервере терминалов, и пользователь может запускать exe-файл из общей папки (не создавая процесс на сервере терминалов), я не могу найти правильный подход для решения этой проблемы.
Как я могу освободить заблокированные файлы до выполнения копии? Грубым решением может быть перезапуск терминального сервера, но я надеюсь, что есть другое решение.
В настоящее время я использую обычный пакетный скрипт и еще не изучал powershell.
Кто-нибудь имеет "лучшее практическое" решение этой проблемы?
Вы можете использовать сторонний инструмент, чтобы помочь вам в этом. Существует инструмент под названием «HoboCopy», который использует теневое копирование тома для создания копии используемого файла.
Вот - это классная статья о том, как ее использовать.