使用 xcopy 批量覆盖只读文件

Overwrite a read-only file in batch with xcopy

我们有一个内部 excel 插件,我们会定期部署在多个 UNC 目录中。每个副本都设置为只读,这样用户就不会意外更改它。 "deployment" 过程涉及转到每个目录,然后通过单击和拖动将文件复制到该位置。由于文件是只读的,没有冲突,用户关闭 excel window 并重新启动,他们有更新。

我已经着手用一个批处理文件替换它,随着目录数量的不断增加,它会自动执行此操作,偶尔会出现错误,例如忘记将文件设置为只读。

我像这样使用 xcopy:

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

我在覆盖文件时访问被拒绝。有没有办法实现我们使用 Batch 通过单击和拖动获得的功能?我确信一定有办法做到这一点,但到目前为止我们看到的所有解决方案都涉及暂时删除 "Read Only" 然后复制文件的代码。我不认为这是一个可行的解决方案,因为如果有人在那一刻加载文件,它可能会锁定对该文件的访问。

编辑:发布后发现它是 xcopy 标志 /r 不知道我是怎么错过它的,我想只是那些日子之一。谢谢

如果这是一个 read-only 文件,将不会启用写入标志,因此您无法编辑它。我的想法/解决方法是使文件可编辑,然后修改然后转换回 read-only.

attrib -r file.txt

your code goes here

attrib +r file.txt

看看这是否适合你,如果你有任何问题,请告诉我。

将 OP 的编辑添加为实际答案:

xcopy source [destination] /y /r

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

来源:ss64.com, Microsoft Docs