使用xcopy批量覆盖只读文件

时间:2016-01-12 20:07:09

标签: windows batch-file cmd xcopy

我们有一个内部excel插件,我们定期在多个UNC目录中部署。每个副本都设置为只读,以便用户在发生意外时无法对其进行更改。 "部署"进程涉及到每个目录,并通过单击和拖动将文件复制到该位置。由于文件是只读的没有冲突,用户关闭excel窗口并重新启动,他们有更新。

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

我像这样使用xcopy:

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

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

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

2 个答案:

答案 0 :(得分:1)

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

xcopy source [destination] /y /r

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

来源:ss64.comMicrosoft Docs

答案 1 :(得分:0)

如果这是一个只读文件而没有启用写标志,那么就无法编辑它。我的想法/解决方法是让文件可编辑,然后修改然后转换回只读。

attrib -r file.txt

your code goes here

attrib +r file.txt

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