Перезаписать файл только для чтения в пакетном режиме с помощью xcopy

У нас есть внутреннее дополнение для Excel, которое мы регулярно развертываем в нескольких каталогах UNC. Каждая копия предназначена только для чтения, чтобы пользователи не могли случайно ее изменить. Процесс «развертывания» включает в себя переход в каждый каталог и копирование файла в это место одним щелчком и перетаскиванием. Поскольку файл доступен только для чтения, конфликта нет, пользователи закрывают окно Excel и перезапускают его, у них есть обновления.

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

Я использую xcopy так:

xcopy "%workingdir%%filename%" "%uncpath%%targetdirectory%" /y /k

И мне отказано в доступе при перезаписи файла. Есть ли способ достичь этой функциональности, которую мы получаем, щелкая и перетаскивая с помощью пакетной обработки? Я уверен, что должен быть способ сделать это, но все решения, которые мы видели до сих пор, включают код для мгновенного удаления «Только для чтения» и последующего копирования файла. Я не верю, что это жизнеспособное решение, поскольку оно может заблокировать доступ к файлу, если кто-то загружает его в эту долю секунды.

РЕДАКТИРОВАТЬ: через несколько мгновений после публикации обнаружил, что это флаг xcopy / r Не уверен, как я его пропустил, полагаю, это был всего лишь один из тех дней. Спасибо.


person sten    schedule 12.01.2016    source источник


Ответы (2)


Если это файл только для чтения, для которого не установлен флаг записи, вы не можете его редактировать. Моя идея / обходной путь для вас - сделать файл доступным для редактирования, а затем изменить, а затем преобразовать обратно в режим только для чтения.

attrib -r file.txt

your code goes here

attrib +r file.txt

Посмотрите, работает ли это для вас, дайте мне знать, если у вас возникнут вопросы.

person manjesh23    schedule 13.01.2016
comment
Привет, спасибо, я оставил вопрос, хотя нашел ответ. Это тоже сработает, но я хотел избежать этого, поскольку это могло вызвать конфликт. Отредактируйте, посмотрите мои предыдущие изменения. - person sten; 14.01.2016

Добавление редактирования Стена в качестве фактического ответа:

xcopy source [destination] /y /r

/y    Suppress prompt to confirm overwriting a file.
/r    Overwrite read-only files.

Источники: ss64.com, Microsoft Docs

person marsze    schedule 26.09.2018