首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XCOPY开关来创建指定的目录,如果它不存在?

XCOPY开关来创建指定的目录,如果它不存在?
EN

Stack Overflow用户
提问于 2011-03-03 10:00:19
回答 9查看 156.2K关注 0票数 82

我在一个后期构建事件中使用XCOPY,将编译后的DLL从它们的输出文件夹复制到主应用程序的输出文件夹中。DLL被复制到主应用程序输出文件夹中的"Modules“子文件夹中,如下所示:

代码语言:javascript
运行
复制
xcopy  "$(TargetPath)" "$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\" 

如果Modules文件夹存在,该命令可以很好地工作,但我在测试过程中发现,如果该文件夹不存在,XCOPY就不会创建它,该命令也会失败。

如果文件夹不存在,是否有XCOPY开关会导致创建该文件夹?如果不存在,如果文件夹不存在,我应该在构建后事件中添加什么来创建该文件夹?谢谢你的帮助。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-03-03 10:11:36

我在命令行中使用以下命令进行了尝试

代码语言:javascript
运行
复制
D:\>xcopy myfile.dat xcopytest\test\

并且目标目录已正确创建。

如果没有,您可以使用启用了cmd的命令扩展的mkdir命令创建目标目录,如下所示

代码语言:javascript
运行
复制
cmd /x /c mkdir "$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\"

('/x‘启用命令扩展,以防它们在您的系统上没有默认启用,我对cmd不是很熟悉)

使用

代码语言:javascript
运行
复制
cmd /? 
mkdir /?
xcopy /?

有关更多信息,请访问:)

票数 58
EN

Stack Overflow用户

发布于 2012-03-27 23:44:38

使用"/I“的答案是有效的,但是使用小技巧的目标,你必须以字符\结束,以告诉xcopy目标是目录而不是文件!

示例:

代码语言:javascript
运行
复制
xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)_DropFolder" /F /R /Y /I

不起作用,并返回代码2,但这一条:

代码语言:javascript
运行
复制
xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)_DropFolder\" /F /R /Y /I

我的示例中使用的命令行参数:

/F -显示完整的源和目标文件名

/R -这将覆盖只读文件

/Y -禁止提示覆盖现有文件

/I -假定目标是目录(但必须以结尾)

票数 122
EN

Stack Overflow用户

发布于 2011-03-03 10:11:47

我讨厌PostBuild步骤,它允许太多的事情发生在构建工具的权限之外。我认为最好让MSBuild来管理复制过程,并进行更新。您可以按如下方式编辑.csproj文件:

代码语言:javascript
运行
复制
  <Target Name="AfterBuild" Inputs="$(TargetPath)\**">
    <Copy SourceFiles="$(TargetPath)\**" DestinationFiles="$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\**" OverwriteReadOnlyFiles="true"></Copy>
  </Target>
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5175806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档