【问题标题】:Overwrite a read-only file in batch with xcopy使用 xcopy 批量覆盖只读文件
【发布时间】:2016-04-17 14:38:02
【问题描述】:

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

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

我正在像这样使用 xcopy:

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

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

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

【问题讨论】:

    标签: windows batch-file cmd xcopy


    【解决方案1】:

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

    xcopy source [destination] /y /r
    
    /y    Suppress prompt to confirm overwriting a file.
    /r    Overwrite read-only files.
    

    来源:ss64.comMicrosoft Docs

    【讨论】:

      【解决方案2】:

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

      attrib -r file.txt

      your code goes here

      attrib +r file.txt

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

      【讨论】:

      • 嘿,谢谢,即使我找到了答案,我还是把问题留了下来。这也可以,但我想避免这样做,因为它可能会导致冲突。编辑,看看我之前的编辑。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 2017-01-08
      • 2014-12-04
      • 2011-05-02
      • 1970-01-01
      • 2020-10-31
      相关资源
      最近更新 更多