【问题标题】:XCOPY command run OK first time. It fails 2nd timeXCOPY 命令第一次运行正常。第二次失败
【发布时间】:2014-05-15 10:28:39
【问题描述】:

我只想在第一次构建应用程序时将配置文件从位置“$(TargetDir)”复制到“%ProgramData%\A\B\”一次。一旦将此文件复制到所需位置,则无需再次复制。我在 VS 2010 中编写了以下构建后事件。它第一次成功运行并将所需文件复制到所需位置,但是当应用程序第二次构建时,它会给出类似“命令......退出并出现错误”的错误代码 2"。我用谷歌搜索但无法知道问题的确切原因。从这个脚本中,我期望如果所需的目录已经存在,那么 XCOPY 语句将不会执行。请指出我哪里错了。

if exist "%ProgramData%\A\B\" == false
xcopy "$(TargetDir)C.exe.config" "%ProgramData%\A\B\" /F

【问题讨论】:

  • 在命令行上运行扩展路径的命令,你会看到完整的错误。
  • 我认为你不能那样分割 if/xcopy,如果你添加一个括号,那么是的。否则将它们保持在同一条线上。使用“echo foobar”进行测试,这些将在构建窗口中输出。
  • @PasiSavolainen:尝试了括号并试图将它们保持在同一行。没有运气,但错误代码更改为 9009。

标签: c# visual-studio-2010 post-build-event


【解决方案1】:

您已经知道 XCOPY 将创建该目录,如果它不存在的话。

由于您第一次已经复制了文件,第二次 Windows 试图通过 XCOPY 命令请求覆盖确认。 Visual Studio 不允许这样做,因此它使用代码 2 退出。

您可以尝试添加 /y 参数,它会抑制提示,然后它可能会起作用。

【讨论】:

  • 我不想再被复制了。
  • 只有当文件是新的或已更改 /s /d 时,您才可以查看复制。 Post in superuser 谈论通过命令提示符直接调用。 superuser.com/questions/308277/…
  • XCOPY 新文件或更改文件无法解决问题,因为复制的文件将被程序修改。应用程序不会修改源文件。因此来源和目的地总是不同的。由于命令“XCOPY new or changed”将用新文件替换复制的文件,所有修改都将丢失。
猜你喜欢
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 2015-12-01
  • 1970-01-01
  • 2013-12-13
  • 2011-09-02
相关资源
最近更新 更多