Назад | Перейти на главную страницу

Пакетный скрипт - Как освободить заблокированный файл для пакетного копирования

Ежедневная запланированная задача Windows запускает пакетный сценарий, который перемещает файлы программы в папку на сервере, используя простую процедуру копирования.

rem deploy programfiles
copy dailybuild\*.dll "\\myserver\programfiles" /Y
copy dailybuild\*.exe "\\myserver\programfiles" /Y

Это работает нормально, если только кто-то на самом деле не запускает исполняемый файл, что приводит к сбою копии из-за заблокированного файла.

Поскольку это находится на сервере терминалов, и пользователь может запускать exe-файл из общей папки (не создавая процесс на сервере терминалов), я не могу найти правильный подход для решения этой проблемы.

Как я могу освободить заблокированные файлы до выполнения копии? Грубым решением может быть перезапуск терминального сервера, но я надеюсь, что есть другое решение.

В настоящее время я использую обычный пакетный скрипт и еще не изучал powershell.

Кто-нибудь имеет "лучшее практическое" решение этой проблемы?

Вы можете использовать сторонний инструмент, чтобы помочь вам в этом. Существует инструмент под названием «HoboCopy», который использует теневое копирование тома для создания копии используемого файла.

Вот - это классная статья о том, как ее использовать.